>백엔드 개발 >PHP 튜토리얼 >처음부터 REST API를 구축하십시오 : 소개

처음부터 REST API를 구축하십시오 : 소개

Joseph Gordon-Levitt
Joseph Gordon-Levitt원래의
2025-02-20 11:48:12970검색

Build a REST API from Scratch: An Introduction 현재 인터넷 생태계는 API에 의해 완전히 변경되었으며 그럴만 한 이유가 있습니다. 제품 또는 서비스에 타사 API를 사용하면 인증 또는 스토리지 서비스와 같은 다양한 유용한 기능에 액세스 할 수 있으며, 이는 사용자와 사용자에게 유익합니다. 자신의 API를 노출시킴으로써 응용 프로그램은 "구성의 일부"가되어 생각하지 못한 방식으로 사용합니다. 이 두 부분으로 구성된 시리즈에서는 실제 모범 사례 세트를 사용하여 PHP 애플리케이션을위한 편안한 API 레이어를 만드는 방법을 보여 드리겠습니다. 이 프로젝트의 전체 소스 코드는 2 부의 끝에 제공됩니다.

키 포인트

REST API는 최신 웹 서비스에 중요하며 응용 프로그램 데이터에 액세스하고 조작 할 수있는 사용자 친화적 인 인터페이스를 개발자에게 제공합니다. 문서는 중요합니다. 관용 및 독백과 같은 도구와 결합 된 슬림 프레임 워크는 강력한 라우팅 및 미들웨어 통합 기능을 활용하여 효율적인 API 개발을 촉진 할 수 있습니다.

HTTPS 구현은 안전한 통신을 보장하고 클라이언트와 서버간에 전송되는 데이터에 대한 무단 액세스를 방지합니다.
    JSON 형식의 구조화 된 오류 처리는 API 가용성을 향상시켜 디버깅 및 통합을 용이하게하는 명확한 오류 메시지 및 코드를 제공합니다.
  • 기본 인증 및 JSON 처리에 대한 토큰과 같은 미들웨어를 통한 인증은 API 상호 작용을 효과적으로 보호하고 관리하는 데 중요합니다.
  • REST : 개발자 친화적 인 ui 우선, API는 개발자의 사용자 인터페이스이므로 친절하고 단순하며 사용하기 쉽고 물론 즐거운 디지털 정크가 될 것입니다. 단순하지만 잘 작성된 readme 파일이더라도 문서는 좋은 시작입니다. 필요한 정보는 서비스 범위와 방법 및 액세스 포인트 목록에 대한 요약입니다. 좋은 요약은 다음과 같습니다. & gt; 두 가지 객체 유형, 연락처 및 메모가 있습니다. 각 연락처에는 이름, 성 및 이메일 주소와 같은 기본 속성이 있습니다. 또한, 각 접점은 이와 관련된 Markdown 형식의 여러 메모를 가질 수 있습니다. 그러면 우리가 구현할 모든 리소스와 운영을 나열하는 것이 좋습니다. 이는 응용 프로그램 와이어 프레임을 시각화하는 것과 동등한 것으로 간주 될 수 있습니다. REST의 주요 원칙에 따라 각 리소스는 작업에 액세스하는 데 사용되는 HTTP 방법 인 URL로 표시됩니다. 예를 들어, get/api/contacts/12는 ID 12와의 연락처를 검색하고 Put/API/Contacts/12는 동일한 연락처를 업데이트합니다. 전체 메소드 목록은 다음과 같습니다
<code>URL             HTTP Method  Operation
/api/contacts   GET          返回联系人数组
/api/contacts/:id GET          返回 ID 为 :id 的联系人
/api/contacts   POST         添加一个新联系人并返回它(添加了 id 属性)
/api/contacts/:id PUT          更新 ID 为 :id 的联系人
/api/contacts/:id PATCH        部分更新 ID 为 :id 的联系人
/api/contacts/:id DELETE       删除 ID 为 :id 的联系人

/api/contacts/:id/star PUT    将 ID 为 :id 的联系人添加到收藏夹
/api/contacts/:id/star DELETE 从收藏夹中删除 ID 为 :id 的联系人

/api/contacts/:id/notes GET   返回 ID 为 :id 的联系人的笔记
/api/contacts/:id/notes/:nid GET   返回 ID 为 :id 的联系人的 ID 为 :nid 的笔记
/api/contacts/:id/notes POST  为 ID 为 :id 的联系人添加新笔记
/api/contacts/:id/notes/:nid PUT   更新 ID 为 :id 的联系人的 ID 为 :nid 的笔记
/api/contacts/:id/notes/:nid PATCH  部分更新 ID 为 :id 的联系人的 ID 为 :nid 的笔记
/api/contacts/:id/notes/:nid DELETE 删除 ID 为 :id 的联系人的 ID 为 :nid 的笔记</code>
보다 완전하고 전문적인 문서를 보려면 Swagger, APIDOC 또는 Google APIS Discovery Service와 같은 도구를 사용하는 것을 고려할 수 있습니다. 사용자가 귀하를 좋아할 것입니다!

도구 및 설정

API를 구축하는 데 사용할 기본 도구는 슬림 프레임 워크입니다. 왜? & gt; [[]는 간단하고 강력한 웹 응용 프로그램과 API를 신속하게 작성하는 데 도움이됩니다. <.> 이것은 사실입니다. 강력한 라우팅 기능은 Get and Post 이외의 사용 방법을 쉽게 사용할 수 있으며 HTTP 메소드 오버라이드 (HTTP 헤더 및 숨겨진 포스트 필드를 통해)에 대한 내장 지원을 제공하고 미들웨어 및 추가 기능을 사용하여 응용 프로그램 및 API를 활성화 할 수 있습니다. 개발은 정말 쉽습니다. Slim과 함께 Idiorm을 사용하여 데이터베이스 계층에 액세스하고 독백을 사용하여 로깅을합니다. 따라서 Composer.json 파일은 다음과 같습니다

슬림/엑스트라 및 슬림/미들웨어 패키지는 컨텐츠 유형 해상도 및 기본 인증과 같은 유용한 기능을 제공합니다. 우리의 사용자 정의 클래스는 API 네임 스페이스와 LIB 디렉토리에 있습니다. 이 시점에서 작업 디렉토리 구조는 다음과 같습니다.

응용 프로그램의 프론트 엔드 컨트롤러는 public/index.php이며, 모든 비 파일 또는 디렉토리 트래픽은 표준 URL 재 작성 규칙을 통해 리디렉션됩니다. 그런 다음 모든 초기화 코드를 bootstrap.php에 넣으면 나중에 볼 수 있습니다. 공유 디렉토리에는 로그, 구성 파일, SQLITE 데이터베이스 및 덤프 파일 및 SSL 인증서와 같은 데이터가 포함됩니다. BIN 디렉토리에는 제공된 .SQL 파일을 사용하여 데이터베이스를 작성하고 일부 데이터를 가져 오는 유틸리티 스크립트가 포함되어 있습니다.

SSL은 어디에나 있습니다 API는 HTTPS 모드에서만 액세스 할 수 있으며 리디렉션이 필요하지 않습니다. 이는 인증 로직을 단순화하고 잘못 구성된 클라이언트가 암호화되지 않은 엔드 포인트에 액세스하는 것을 방지합니다. 이 방법을 설정하는 가장 쉽고 논리적 인 방법은 웹 서버 또는 프록시 서버를 통해 직접 작동하는 것입니다. 이 작업을 수행하기 위해 오래된 신뢰할 수있는 Apache를 사용하고 있으며 가상 호스트 파일은 다음과 같습니다.

먼저 디렉토리 설정을 정의하여 당사 사이트의 HTTP 및 HTTPS 버전에 공통적이되도록합니다. 비 보안 호스트 구성에서 Mod_rewrite를 사용하여 비 안전한 연결에 대해 403 금지 오류를 발행 한 다음 보안 섹션에서 자체 서명 된 인증서와 함께 SSL을 설정하는 SLIM_ENV 변수를 설정합니다. 현재 응용 프로그램 모드를 슬림합니다. Apache에서 자체 서명 된 인증서를 작성하고 설치하는 방법에 대한 자세한 내용은 SSLShopper 에서이 기사를 참조하십시오. 명확한 목표, 기본 디렉토리 구조 및 서버 설정을 갖추 었으므로 Composer.phar를 설치하고 일부 코드 작성을 시작하겠습니다.

<code class="language-json">{
  "name": "yourname/my-contacts",
  "description": "Simple RESTful API for contacts management",
  "license": "MIT",
  "authors": [
    {
      "name": "Your Name",
      "email": "you@yourdomain.com"
    }
  ],
  "require": {
    "slim/slim": "*",
    "slim/extras": "*",
    "slim/middleware": "*",
    "monolog/monolog": "*",
    "j4mie/paris": "*",
    "flynsarmy/slim-monolog": "*"
  },
  "archive": {
    "exclude": ["vendor", ".DS_Store", "*.log"]
  },
  "autoload": {
    "psr-0": {
      "API": "lib/"
    }
  }
}</code>
부팅 프로그램 및 프론트 엔드 컨트롤러

앞에서 언급했듯이 bootstrap.php 파일은 응용 프로그램 설정 및 자동 로더 설정을로드 할 책임이 있습니다.

<code>URL             HTTP Method  Operation
/api/contacts   GET          返回联系人数组
/api/contacts/:id GET          返回 ID 为 :id 的联系人
/api/contacts   POST         添加一个新联系人并返回它(添加了 id 属性)
/api/contacts/:id PUT          更新 ID 为 :id 的联系人
/api/contacts/:id PATCH        部分更新 ID 为 :id 的联系人
/api/contacts/:id DELETE       删除 ID 为 :id 的联系人

/api/contacts/:id/star PUT    将 ID 为 :id 的联系人添加到收藏夹
/api/contacts/:id/star DELETE 从收藏夹中删除 ID 为 :id 的联系人

/api/contacts/:id/notes GET   返回 ID 为 :id 的联系人的笔记
/api/contacts/:id/notes/:nid GET   返回 ID 为 :id 的联系人的 ID 为 :nid 的笔记
/api/contacts/:id/notes POST  为 ID 为 :id 的联系人添加新笔记
/api/contacts/:id/notes/:nid PUT   更新 ID 为 :id 的联系人的 ID 为 :nid 的笔记
/api/contacts/:id/notes/:nid PATCH  部分更新 ID 为 :id 的联系人的 ID 为 :nid 的笔记
/api/contacts/:id/notes/:nid DELETE 删除 ID 为 :id 的联系人的 ID 为 :nid 的笔记</code>
먼저, 나는 현재 환경을 얻습니다. .php라는 파일이 있으면로드되면 기본 구성 파일이로드됩니다. 슬림 한 특정 설정은 $ config [ 'app'] 배열에 저장되며 기본 슬림 객체를 확장하는 응용 프로그램의 생성자로 전달됩니다 (선택 사항이지만 권장). 예를 들어, 문 :

app/path/share/logs/envname_yyyy-mm-dd.log의 파일에 쓰는 독백 로거를 구성하십시오. 그런 다음 약간의 개선 후 (소스 코드에서 볼 수 있음) 생성 된 로그 작성자를 얻고 데이터베이스에 연결하려고합니다. 마지막으로, 필요한 미들웨어를 응용 프로그램 인스턴스에 추가했습니다. Slim의 미들웨어는 양파 레이어와 같으며, 첫 번째 미들웨어는 가장 안쪽 레이어이므로 미들웨어의 순서가 중요합니다. 다음은 API에서 사용합니다 .- 캐시 (내부 레벨) - 클라이언트의 JSON 형식을 구문 분석합니다 본문 "모범 사례 유틸리티 미들웨어; - 인증 (가장 외부 층). 기존 콘텐츠 유형을 제외 하고이 모든 것을 쓸 것입니다. 부트 스트랩 파일의 끝에서, 나는 두 개의 글로벌 변수 $ app (ap)와 $ log (log writer)를 정의합니다. 파일은 프론트 엔드 컨트롤러 index.php에 의해로드되며 해당 파일에서 마법이 발생합니다.

라우팅 구조
<code class="language-json">{
  "name": "yourname/my-contacts",
  "description": "Simple RESTful API for contacts management",
  "license": "MIT",
  "authors": [
    {
      "name": "Your Name",
      "email": "you@yourdomain.com"
    }
  ],
  "require": {
    "slim/slim": "*",
    "slim/extras": "*",
    "slim/middleware": "*",
    "monolog/monolog": "*",
    "j4mie/paris": "*",
    "flynsarmy/slim-monolog": "*"
  },
  "archive": {
    "exclude": ["vendor", ".DS_Store", "*.log"]
  },
  "autoload": {
    "psr-0": {
      "API": "lib/"
    }
  }
}</code>

Slim에는 Route Groups라는 멋진 기능이 있습니다. 이 기능을 사용하면 다음과 같은 응용 프로그램 경로를 정의 할 수 있습니다.

나는 두 개의 중첩 그룹 /API 및 /V1을 만들어 "URL의 버전 제어"모범 사례를 쉽게 준수 할 수 있습니다. 또한 사용자가 읽을 수있는 컨텐츠를 포함 할 수있는/API/에 대한 선택적인 경로와 실제 세계에서 응용 프로그램의 공개 사용자 인터페이스를 포함 할 수있는 공통 루트 URL (/) URL을 만들었습니다.
<code>bootstrap.php
composer.json
README.md
bin/
    import
    install
lib/
    API/
public/
    .htaccess
    index.php
share/
    config/
        default.php
    db/
    logs/
    sql/
        data/
            contacts.sql
            users.sql
        tables/
            contacts.sql
            notes.sql
            users.sql
        ssl/
            mysitename.crt
            mysitename.key</code>
JSON 미들웨어

나의 초기 접근 방식은 인증 및 JSON 요청 /응답을 위해 /v1 그룹 내에서 라우팅 미들웨어 (또 다른 슬림 미들웨어)를 사용하는 것이었지만 클래식 미들웨어를 사용하는 것이 더 실용적이고 간결하다는 것을 알았습니다. 앞에서 언급했듯이 미들웨어는 SlimMiddleware에서 상속 된 클래스의 인스턴스입니다. Slim Middleware의 Call () 메소드는 미들웨어가 글로벌 미들웨어로 연결되면 작동하는 경우 $ app- & gt; add () 메소드를 사용하여 자동으로 실행됩니다.

우리의 JSON 미들웨어는 "JSON Response Only"와 "JSON Encoding Body"라는 두 가지 모범 사례를 구현합니다. 이 방법은 다음과 같습니다.

<code>URL             HTTP Method  Operation
/api/contacts   GET          返回联系人数组
/api/contacts/:id GET          返回 ID 为 :id 的联系人
/api/contacts   POST         添加一个新联系人并返回它(添加了 id 属性)
/api/contacts/:id PUT          更新 ID 为 :id 的联系人
/api/contacts/:id PATCH        部分更新 ID 为 :id 的联系人
/api/contacts/:id DELETE       删除 ID 为 :id 的联系人

/api/contacts/:id/star PUT    将 ID 为 :id 的联系人添加到收藏夹
/api/contacts/:id/star DELETE 从收藏夹中删除 ID 为 :id 的联系人

/api/contacts/:id/notes GET   返回 ID 为 :id 的联系人的笔记
/api/contacts/:id/notes/:nid GET   返回 ID 为 :id 的联系人的 ID 为 :nid 的笔记
/api/contacts/:id/notes POST  为 ID 为 :id 的联系人添加新笔记
/api/contacts/:id/notes/:nid PUT   更新 ID 为 :id 的联系人的 ID 为 :nid 的笔记
/api/contacts/:id/notes/:nid PATCH  部分更新 ID 为 :id 的联系人的 ID 为 :nid 的笔记
/api/contacts/:id/notes/:nid DELETE 删除 ID 为 :id 的联系人的 ID 为 :nid 的笔记</code>
우리는 루트 경로를 미들웨어 생성자에게 전달할 수 있습니다. 이 경우 /API /V1을 통과하여 미들웨어가 사이트의 API 부분에만 적용되도록합니다. 현재 경로가 응답 내용 유형 헤더와 일치하면 응답 내용 유형 헤더가 Application/JSON이어야하며 요청 메소드를 확인합니다. 요청 메소드가 쓰기 (PIT, POST, PATCH)를 활성화하는 요청 메소드 중 하나 인 경우 요청 콘텐츠 유형 헤더는 Application/JSON이어야합니다. 그렇지 않으면 응용 프로그램이 종료되어 415 지원 미디어 유형 HTTP 상태 코드를 표시합니다. 모든 것이 잘 작동하면 $ this- & gt; next- & gt; call ()은 체인에서 다음 미들웨어를 실행합니다.

인증

응용 프로그램은 기본적으로 HTTPS에서 실행되므로 기본 인증보다 토큰이 우선하는 메소드를 사용하기로 결정했습니다. API 키는 기본 HTTP Auth 헤더의 사용자 이름 필드로 전송됩니다 (필수 사항 없음). 이를 위해 기존 슬림 httpbasicauth를 수정하여 Tokenoverbasicauth라는 슬림 미들웨어 클래스를 썼습니다. 이 미들웨어는 체인에서 먼저 실행되므로 마지막 제품으로 추가되며 생성자에 옵션 루트 경로 매개 변수가 필요합니다.

이 메소드는 Auth Token에 대한 php_auth_user 요청 헤더를 검색하고 존재하지 않거나 유효하지 않은 경우 401 금지 상태 및 인증 헤더를 클라이언트에게 전달합니다. verify () 메소드는 보호되므로 내 버전은 간단합니다 여기에서는 사용자 테이블에 API 키가 있는지 확인하고 유효한 사용자를 찾으면 다음 레이어 (Ratelimit)와 함께 사용하기 위해 응용 프로그램 컨텍스트에 추가됩니다. 이 클래스를 수정하거나 확장하여 자신의 인증 로직을 주입하거나 OAUTH 모듈을 사용할 수 있습니다. OAUTH에 대한 자세한 내용은 Jamie Munro의 기사를 참조하십시오.

사용 된 오류 페이로드

우리의 API는 가능한 경우 유용한 오류 메시지를 사용 가능한 형식으로 표시해야합니다. 오류 코드 및 메시지가 포함 된 최소 페이로드가 필요합니다. 또한 검증 오류에는 더 많은 분할이 필요합니다. Slim을 사용하여 각각 $ app- & gt; notfound () 및 $ app- & gt; error () 메소드를 사용하여 404 오류 및 서버 오류를 재정의 할 수 있습니다.

<code>URL             HTTP Method  Operation
/api/contacts   GET          返回联系人数组
/api/contacts/:id GET          返回 ID 为 :id 的联系人
/api/contacts   POST         添加一个新联系人并返回它(添加了 id 属性)
/api/contacts/:id PUT          更新 ID 为 :id 的联系人
/api/contacts/:id PATCH        部分更新 ID 为 :id 的联系人
/api/contacts/:id DELETE       删除 ID 为 :id 的联系人

/api/contacts/:id/star PUT    将 ID 为 :id 的联系人添加到收藏夹
/api/contacts/:id/star DELETE 从收藏夹中删除 ID 为 :id 的联系人

/api/contacts/:id/notes GET   返回 ID 为 :id 的联系人的笔记
/api/contacts/:id/notes/:nid GET   返回 ID 为 :id 的联系人的 ID 为 :nid 的笔记
/api/contacts/:id/notes POST  为 ID 为 :id 的联系人添加新笔记
/api/contacts/:id/notes/:nid PUT   更新 ID 为 :id 的联系人的 ID 为 :nid 的笔记
/api/contacts/:id/notes/:nid PATCH  部分更新 ID 为 :id 的联系人的 ID 为 :nid 的笔记
/api/contacts/:id/notes/:nid DELETE 删除 ID 为 :id 的联系人的 ID 为 :nid 的笔记</code>
오류가 더 간단하지 않습니다. 먼저 요청 된 미디어 유형을 얻은 다음 $ isapi 플래그에 현재 URL이 /api /v* 그룹 아래에 있는지 알려줍니다. 클라이언트가 API URL을 요청하거나 JSON 컨텐츠 유형 헤더를 보내면 JSON 출력을 반환합니다. 그렇지 않으면이 예제에 표시된대로 템플릿을 렌더링하거나 간단히 정적 HTML을 인쇄 할 수 있습니다. 다른 오류는 약간 까다 롭고 예외가 발생하면 $ app- & gt; error () 메소드가 트리거되고 Slim은 표준 PHP 오류를 ErroreXection 객체로 변환합니다. 보안 취약점을 피하기 위해 너무 많은 내부 메커니즘을 노출시키지 않고도 고객에게 유용한 오류를 제공하는 방법이 필요합니다. 이 응용 프로그램의 경우 Apiexception과 ApiexceptionValidationException의 두 가지 사용자 정의 예외를 만들었습니다. 이는 대중에게 노출되는 다른 모든 예외 유형이 로그에 로그인되어 개발 모드에만 표시됩니다.

$ app- & gt; error () 메소드는 매개 변수로 던진 예외를 수신합니다. 기본적으로 필요한 모든 데이터를 얻고 $ 오류 배열을 채우고 제작 모드에 있으면 개인 데이터를 세트하지 않고 일반 데이터로 메시지를 다시 작성합니다. Custom ValidationException 클래스에는 최종 페이로드에 추가 된 유효성 검사 오류를 반환하는 사용자 정의 getData () 메소드가 있습니다. 그런 다음 요청에 따라 JSON 또는 HTML에 오류를 표시하십시오. API 측면에서는 다음과 같이 간단한 오류가 발생할 수 있습니다.
<code class="language-json">{
  "name": "yourname/my-contacts",
  "description": "Simple RESTful API for contacts management",
  "license": "MIT",
  "authors": [
    {
      "name": "Your Name",
      "email": "you@yourdomain.com"
    }
  ],
  "require": {
    "slim/slim": "*",
    "slim/extras": "*",
    "slim/middleware": "*",
    "monolog/monolog": "*",
    "j4mie/paris": "*",
    "flynsarmy/slim-monolog": "*"
  },
  "archive": {
    "exclude": ["vendor", ".DS_Store", "*.log"]
  },
  "autoload": {
    "psr-0": {
      "API": "lib/"
    }
  }
}</code>
또는 아래와 같이 완전한 검증 오류 :

결론
<code>bootstrap.php
composer.json
README.md
bin/
    import
    install
lib/
    API/
public/
    .htaccess
    index.php
share/
    config/
        default.php
    db/
    logs/
    sql/
        data/
            contacts.sql
            users.sql
        tables/
            contacts.sql
            notes.sql
            users.sql
        ssl/
            mysitename.crt
            mysitename.key</code>

우리는 이제 API의 핵심을 가지고 있습니다. 다음 섹션에서는 완전히 기능적인 서비스를 제공하기 위해 일부 컨텐츠를 추가합니다. 이 시간 동안이 섹션에 연결된 기사를 자유롭게 읽으십시오. 유용한 API 디자인 원칙의 보물입니다.

FAQS (FAQ)는 처음부터 REST API를 건축 할 때
<code class="language-apache"><directory>

  # Required for mod_rewrite in .htaccess
  AllowOverride FileInfo

  Options All -Indexes

  DirectoryIndex index.php index.shtml index.html

  <ifmodule php5_module="">
    # For Development only!
    php_flag display_errors On
  </ifmodule>

  # Enable gzip compression
  <ifmodule filter_module="">
    AddOutputFilterByType DEFLATE application/json
  </ifmodule>

  Order deny,allow
  Deny from all
  Allow from 127.0.0.1
</directory>

<virtualhost>
  ServerAdmin you@yourdomain.com
  DocumentRoot "/path/to/MyApp/public"
  ServerName myapp.dev

  <ifmodule rewrite_module="">
    RewriteEngine on

    ## Throw a 403 (forbidden) status for non secure requests
    RewriteCond %{HTTPS} off
    RewriteRule ^.*$ - [L,R=403]
  </ifmodule>
</virtualhost>

<ifmodule ssl_module="">

  NameVirtualHost *:443

  Listen 443
  SSLRandomSeed startup builtin
  SSLRandomSeed connect builtin

  <virtualhost>
    ServerAdmin you@yourdomain.com
    DocumentRoot "/path/to/MyApp/public"
    ServerName myapp.dev

    SSLEngine on
    SSLCertificateFile /path/to/MyApp/share/ssl/mysitename.crt
    SSLCertificateKeyFile /path/to/MyApp/share/ssl/mysitename.key

    SetEnv SLIM_MODE development

  </virtualhost>
</ifmodule></code>
입니다 REST API의 주요 구성 요소는 무엇입니까?

REST API는 여러 주요 구성 요소로 구성됩니다. 첫 번째는 HTTP 방법으로 수행 할 작업 유형을 정의합니다. 여기에는 Get, Post, Put, Delete 등이 포함됩니다. 두 번째 구성 요소는 URL 또는 URI이며 리소스 식별자입니다. 세 번째 구성 요소는 HTTP 헤더이며 HTTP 요청 및 응답의 메타 데이터를 전달합니다. 네 번째 구성 요소는 본문 또는 페이로드이며, 실제 데이터를 전송합니다. 마지막으로, 상태 코드는 HTTP 요청의 성공 또는 실패를 나타냅니다. 내 휴식 API를 보호하는 방법은 무엇입니까? REST 보호 API는 민감한 데이터를 보호하는 데 필수적입니다. 인증 및 인증을 위해 API 키, OAUTH 또는 JWT와 같은 다양한 방법을 사용할 수 있습니다. 또한 데이터 전송은 항상 데이터 무결성과 기밀을 보장하는 데 사용됩니다. 취약성을 방지하기 위해 API 및 그 종속성을 정기적으로 업데이트하고 패치하십시오.

REST API 버전은 방법?

REST 버전 API 버전을 사용하면 기존 클라이언트에 영향을 미치지 않고 비파괴적인 변경 사항을 도입 할 수 있습니다. URL에 버전 번호를 포함 시키거나 사용자 정의 요청 헤더를 사용하여 API를 버전 할 수 있습니다. 모든 변경 사항을 기록하고 API 소비자에게 새 버전 및 해당 기능을 알리십시오.

REST API에서 오류를 처리하는 방법은 무엇입니까?

REST API의 올바른 오류 처리는 유용성과 신뢰성을 향상시킵니다. HTTP 상태 코드를 사용하여 오류 유형을 표시하십시오. 오류에 대한 자세한 내용은 응답 본문에 오류 메시지를 포함시킵니다. 이를 통해 고객은 무엇이 잘못되었는지, 문제를 해결하는 방법을 이해하는 데 도움이됩니다.

내 휴식 API를 테스트하는 방법은 무엇입니까?

REST API를 테스트하여 예상대로 작동하고 다양한 시나리오를 처리 할 수 ​​있는지 확인하십시오. 수동 테스트를 위해 Postman 또는 Curl과 같은 도구를 사용할 수 있습니다. 자동화 된 테스트의 경우 단위 테스트, 통합 테스트 및 엔드 투 엔드 테스트 사용을 고려하십시오. 모의 서버를 사용하여 API 응답을 시뮬레이션하고 API가 다양한 유형의 응답을 처리하는 방법을 테스트하십시오.

내 REST API를 기록하는 방법은 무엇입니까?

좋은 문서화로 인해 REST API를 쉽게 이해하고 사용하기 쉽습니다. 엔드 포인트, 요청 방법, 요청 매개 변수, 요청 예제, 응답 상태 코드 및 응답 예에 대한 자세한 정보가 포함되어 있습니다. Swagger 또는 Postman과 같은 도구를 사용하여 API 문서를 생성하고 호스팅 할 수 있습니다.

편안한 API를 설계하는 방법은 무엇입니까?

RESTFUL API 설계에는 계획 자원, 엔드 포인트 및 방법이 포함됩니다. 리소스 및 HTTP 방법에 대한 명사를 사용하십시오. API를 단순하고 직관적으로 유지하십시오. 상태 코드를 사용하여 요청 결과를 나타냅니다. API SANTELESS를 만드십시오. 즉, 각 요청에 요청을 처리하는 데 필요한 모든 정보가 포함되어 있어야합니다.

휴식을 취하는 방법은 내 휴식 API를 초래합니까?

페이징은 단일 응답으로 반환 된 데이터 양을 제한하는 데 도움이됩니다. "페이지"및 "제한"과 같은 쿼리 매개 변수를 사용하여 페이징을 구현할 수 있습니다. 응답 헤더 또는 본문에 메타 데이터를 포함하여 현재 페이지, 총 페이지 수, 총 항목 수 등을 나타냅니다.

내 휴식 비율을 제한하는 방법은 무엇입니까?

요금 제한은 휴식 API를 남용으로부터 보호하고 공정한 사용을 보장합니다. IP 주소, API 키 또는 사용자 계정을 기반으로 요청 수를 제한 할 수 있습니다. HTTP 헤더를 사용하여 요금 제한 상태를 클라이언트에 전달하십시오.

REST API를 배포하는 방법은 무엇입니까?

REST API를 서버 또는 클라우드 플랫폼에 배포 할 수 있습니다. 배포 옵션을 선택할 때 비용, 확장 성 및 보안과 같은 요소를 고려하십시오. CI/CD (Continuous Integration and Continuous Delivery) 도구를 사용하여 배포 프로세스를 자동화하십시오. API 성능 및 사용량을 모니터링하여 사용자의 요구를 충족시킵니다.

위 내용은 처음부터 REST API를 구축하십시오 : 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.