去年、このヘッドセットを購入して、半年程使用しました。
Bluetooth接続できて、かつ、マイクが口元にあり、マイクにもノイズ除去機能があるものを探して、これに辿り着いた次第でした。
ところが、騒がしいところでも、周囲の音を拾わないことを期待したわけでしたが、近くでの声や音は拾ってしまうということが、MT相手の反応からわかりました。
いや、求めていたレベルが大きすぎただけで、悪い製品ではないんですがね。
やはり、静かなところでやるに、限りますね。
去年、このヘッドセットを購入して、半年程使用しました。
Bluetooth接続できて、かつ、マイクが口元にあり、マイクにもノイズ除去機能があるものを探して、これに辿り着いた次第でした。
ところが、騒がしいところでも、周囲の音を拾わないことを期待したわけでしたが、近くでの声や音は拾ってしまうということが、MT相手の反応からわかりました。
いや、求めていたレベルが大きすぎただけで、悪い製品ではないんですがね。
やはり、静かなところでやるに、限りますね。
DRFのレスポンスは、通常は、メッセージが表示されるだけ。
{ "param1": [ "この項目は必須です。" ] }
APIの例外クラスを見ると、エラーコード(code)が指定されることがわかります。 このcodeをレスポンスに含めたい場合、どうするか。
class APIException(Exception): """ Base class for REST framework exceptions. Subclasses should provide `.status_code` and `.default_detail` properties. """ status_code = status.HTTP_500_INTERNAL_SERVER_ERROR default_detail = _('A server error occurred.') default_code = 'error' def __init__(self, detail=None, code=None): if detail is None: detail = self.default_detail if code is None: code = self.default_code
以下のように、EXCEPTION_HANDLERをカスタマイズし、exc.get_full_details()
の結果をレスポンスにセットする。
/PATH/TO/xxx/utils.py
from rest_framework.exceptions import APIException from rest_framework.response import Response from rest_framework.views import exception_handler def custom_exception_handler(exc, context): response = exception_handler(exc, context) if response is not None: if isinstance(exc, APIException): data = exc.get_full_details() response = Response(data, status=exc.status_code, headers=response.headers) return response
/PATH/TO/settings/base.py
REST_FRAMEWORK = { "EXCEPTION_HANDLER": "xxx.utils.custom_exception_handler", }
そうすると、こういうレスポンスが返ります。
{ "param1": [ {"message": "この項目は必須です。", "code": "required"} ] }
ステータスコードだけだと、多様なエラーのハンドリングが難しい場合に、試してみたいです。