ユーザーからの入力を必要としないプロセスを起動する必要があります。トリガーのみです。ボディなしでPOST / uriを使用してプロセスをトリガーする予定です。HTTPとRESTの両方の観点からこれが悪いと考えられるかどうか知りたいですか?
ユーザーからの入力を必要としないプロセスを起動する必要があります。トリガーのみです。ボディなしでPOST / uriを使用してプロセスをトリガーする予定です。HTTPとRESTの両方の観点からこれが悪いと考えられるかどうか知りたいですか?
回答:
GETの代わりにPOSTを使用することは、キャッシュされた応答を返さないようにサーバー(および途中のゲートウェイ)に指示するため、完全に合理的です。
ボディなしでPOST / uriを使用する場合、引数を取らない関数を使用するようなものです。.eg int post(void); そのため、引数なしでオブジェクトの状態を変更できる関数をリソースクラスに持たせるのが妥当です。URIにUnixタッチ機能を実装することを検討している場合、それは良い選択ではありませんか?
はい、本文なしでPOSTリクエストを送信し、代わりにクエリ文字列パラメーターを使用することは問題ありません。ただし、パラメーターにHTTP有効ではない文字が含まれている場合は、それらをエンコードする必要があるので注意してください。
たとえば、「hello world」をエンドポイントにPOSTする必要がある場合は、次のようにする必要があります。http://api.com?param = hello %20world
この場合POSTがOKであるという回答のサポートは、Pythonの場合、OpenAPIフレームワーク「FastAPI」が、メソッド(以下の例を参照)が含まれていない場合に、Bodyセクションを含まないSwagger GUI(画像を参照)を生成することです。ボディを受け入れるパラメータがあります。
メソッド「post_disable_db」は、パスパラメータ「db_name」を受け入れるだけで、必須の本体を意味する2番目のパラメータはありません。
@router.post('/{db_name}/disable',
status_code=HTTP_200_OK,
response_model=ResponseSuccess,
summary='',
description=''
)
async def post_disable_db(db_name: str):
try:
response: ResponseSuccess = Handlers.databases_handler.post_change_db_enabled_state(db_name, False)
except HTTPException as e:
raise (e)
except Exception as e:
logger.exception(f'Changing state of DB to enabled=False failed due to: {e.__repr__()}')
raise HTTPException(HTTP_500_INTERNAL_SERVER_ERROR, detail=e.__repr__())
return response