TIL Day 36 REST API


クライアントとサーバの通信を担当するAPIについて説明します.
GoogleやMSのような大手IT企業はどのようにAPIを作成していますか?
Webサイトを独自に作成および管理する場合は、APIルールは必要ありません.しかし、会社はチーム単位でサービスを開発しているので、小さなことでもルールがあり、コミュニケーションがスムーズになります.

AG

  • REST APIが理解できます.
  • Postmanとは何かを理解し、使用することができます.
  • REST API


    Webアプリケーションは、HTTPメソッド(GET/POST/PUT/DELETEなど)を使用して、要求および応答によりデータを交換します.リクエストと応答には、「送信と受信が正しい」という約束があります.REST API(Representation State Transfer)の略で、Web上で使用されるデータまたはリソースをHTTP URIとして表し、HTTPプロトコルによって要求および応答を定義する方法を指す.
    では、どのようにして約束に合ったREST APIを作成するのでしょうか.

    良好なREST APIの設計方法



    REST成熟度モデル-手順0


    HTTPプロトコルを単純に使用します.
    req : POST/appointment HTTP/1.1
    res : HTTP/1.1 200 OK
    第0期HTTPプロトコルが適用されない理由:要求内容の特徴を正確に理解できない.

    REST成熟度モデル-手順1


    個別資源との通信を遵守する.
    簡単に言えば、第1の段階において、すべてのリソースは、各リソースに対応するエンドポイントを使用し、要求および受信されたリソースの情報を応答として伝達しなければならない.
    req : POST/doctors/허준 HTTP/1.1
    [헤더 생략]
    {"date" : "2022-08-10"
    }
    res : HTTP/1.1 200 OK
    [헤더 생략]
    {
      "slots" : [
        {"id" : 123, "doctor" : "허준", "start" : "09:00", "end" : "12:00"},
        {"id" : 124, "doctor" : "허준", "start" : "14:00", "end" : "16:00"}
    
    req : POST/slots/123 HTTP/1.1
        [헤더 생략]
      {
        "patient" : "김코딩"
      }
    res : HTTP/1.1 200 OK
    [헤더 생략]
      {
        "appointment" : {
          "slot" : {"id" : 123, "doctor" : "허준", ~},
           "patient" : "김코딩"
       }
      }
    //또는 
    res : HTTP/1.1 409 Conflict
    [헤더 생략]
        {
          "appointmentFailure : {
          "slot" : {"id" : 123, "doctor" : "허준",~},
           "patient" : "김코딩",
           "reason" : "해당 시간은 이미 예약되어 있습니다."
           }
         }
    第0段階では、すべての要求がエンドポイント/appointmentとして使用され、第1段階では、예약 가능한 시간 확인と呼ばれる要求応答のリソースは、許駿という医師が予約できる時間である.したがって、/doctor/허준という端点が使用される.
    また、特定の時間に予定されている場合、実際のslotリソースのID 123のリソースが変更されるので、実際に/slot/123に変更されたリソースがエンドポイントとして使用される.
    これらのリソースの変化や応答の違いにより、異なるエンドポイントを使用することが重要であるため、適切なエンドポイントを使用することが重要である.

    REST成熟度モデル-手順2


    ステップ2では、CRUDに適切なAPIを記述することに重点を置く.
    上記の例のように、READは時間を予約することができ、CREATEは特定の時間に予約することができる.したがって、READを行うために、GETメソッドを使用して要求が送信され、GETbodyを有さないので、query parameterを使用して必要なリソースが伝達される.
    CREATEを予約するためには、POSTの方法でリクエストを送信することが望ましい.
    req : GET/doctors/허준/slots?date=2022-08-10 HTTP/1.1
    [헤더 생략]
    res : HTTP/1.1 200 OK
    {
      "slots" : [
        {"id" : 123, "doctors" : "허준", ~},
        {"id" : 124, "doctors" : "허준", ~}
        ]
    }
    
    req : POST/slots/123 HTTP/1.1
    [헤더 생략]
    {
      "patient" : "김코딩"
    }
    res : HTTP/1.1 201 Created
    Location : slots/123/appointment
    [헤더 생략]
    {
      "appointment" : {
        "slot" : {"id":123, "doctor" : "허준", ~ },
        "patient" : "김코딩"
      }
    }
    上の方法の使い方を整理してみます.GET:変更されていないリクエストにサーバ上のデータを使用する必要があります.POST:要求ごとに新しいリソースが生成されます.PUT:要求ごとに新しいリソースが返されます.(更新)(べき乗など)PATCH:要求されたリソースの一部を更新します.
    第2段階の条件が満たされる場合、REST APIと呼ぶことができる.
    ステップ3はスキップ

    Open API