08-21-2023 7:13 AM
PostmanでRestful APIの動作を検証中です。
Request HeaderやBodyで使用する項目について整理された資料がありましたらご教示いただけませんでしょうか?
■背景:
PostmanでRestful APIを使用したCRUD処理(8/17投稿『$batchを使用したOData複数レコードの一括処理方法』)を検証しています。
Communityでアドバイスをいただき、またSAP Blogを参考にしながらCRUD処理を行うAPIを作成することができました。
しかし、一応APIが動作しているもののRequest HeaderやBodyに記載するコンテンツの過不足がないか?という点が気になっております。
例えば、下記は私が作成したAPIのBodyです。
こちらはSAP Blogの投稿にあったBodyです(Odata $batch processing part 2 | SAP Blogs)
SAP Blogにはsap-context-accept:headerが記載されていますが、私のAPIでは記載がなくても動作しています。
上記は一例ですが、HeaderとBodyに必須の項目は何で、任意の項目は何なのか整理された資料があれば共有いただけませんでしょうか?
■既に調べたこと
下記ページにはRequest Headerや$batchのBodyについて記載がありましたが、必須項目や任意項目については書かれていませんでした。
・SAP Help Portal
$batch Processing | SAP Help Portal
・ODataサイト
Batch Processing (OData Version 2.0) · OData - the Best Way to REST
以上、よろしくお願いいたします。
08-22-2023 5:36 AM
必要十分なパラメーターはエラーが出ない程度に最小限までパラメーターを減らして確かめるのが一番だと思います。
以下、私の経験で確実に必要そうなパラメーターはこのあたりかと思います。
まず、認証のための情報(ABAP環境ならBasic認証など)は確実に必要になると思います。
SAP標準のOData APIで登録・変更系が使いたい場合、あらかじめx-csrf-tokenというHTTPヘッダパラメーターにfetchを入れてGETしたのちにそのresponseに入っている値を再びx-csrf-tokenにいれてPOST/PUT/PATCH等で送信してあげることが必要になる場合が多いです。
データを送信するときは、そのフォーマットを指定するためにContent-Typeにapplicaiton/jsonとかapplication/xmlを指定することが必要になります。
変更系のAPIの場合、Etagの情報を使って楽観ロックを実現させることもあり、If-MatchをHTTP headerに入れる必要がある場合もあります。例えば出庫確認のAPIも伝票の変更に近い処理なのでPOSTを使いつつもif-matchが必要になります。
https://help.sap.com/docs/SAP_S4HANA_CLOUD/588780cab2774a7ab9fffca3a7f919fe/3896ca0f93af4c86bdf951d8...
各ドキュメントではその人が入力した時に動いたものがそのまま記載されていることも多いので、自分で試してみて動いているのであれば、それが必要最小限という形になるかと思います。
08-22-2023 11:03 AM
@sugisita さん
ありがとうございます。明記されているドキュメントは見つからなかったものの、Basic認証、x-csrf-token、Content-Typeはほぼ確実に必要だろうと私も思っていたので安心しました。自分で最低限のパラメータまで減らして今回使用するAPIでは何が必要か確かめてみようと思います。