평안한 API는 무엇인가
나머지는 스타일이 아닌 표준입니다. 그것은 클라이언트와 서버의 형태로 상호 작용을 의미합니다. 핵심 아이디어는 클라이언트가 전송하는 데이터 조작 지시 "동사 + 개체"구조입니다이다.
편안한 API는 여러 가지 기능을 가지고 있습니다 :
참고 자료 : 인터페이스 이름은 오히려 getAllAnimals 등보다는 동물원, 동물, 수 있습니다
: HTTP를 사용 동사 GET/PUT/POST/DELETE/PATCH/HEAD/OPTIONS
가 아니라 단지 우리의 일상 사용하는 것보다 GET과 POST
디자인 원칙
인터페이스는 명사로 명명 될 때에 1, 동사 때문에 자원 인터페이스 동작에 의해 사용되어서는 안된다.
관리를보다 직관적 버전 반복 도움이됩니다, URL에 버전 번호를 추가합니다
https://www.rgc.com/v1/
는 HTTP 동사에 의해 표현되어야 작동 자원의 유형 3.
- / 동물원을 GET : 목록 모든 동물원
- POST / 동물원 : 새 동물원 만들기
- GET / 동물원 / ID : 지정된 동물원에 대한 정보를 획득
- PUT / 동물원 / ID : 업데이트 지정된 동물원 (정보 동물원 모두 제공)
- DELETE / 동물원 / ID : 동물원을 삭제
- GET / 동물원 / ID / 동물 : 주어진 동물원에서 모든 동물
- DELETE / 동물원 / ID / 동물 / ID : 지정된 특정 동물 동물원을 삭제
4, HTTP 방법 각 리소스 작업 CURD
- 서버 (하나 또는 그 이상)에서 자원을 제거합니다 (SELECT)를 가져옵니다.
- POST는 (CREATE)을 : 서버 상에 새로운 자원.
- PUT (UPDATE) : 서버에서 (변화에 클라이언트가 제공하는 데 필요한 리소스 후) 리소스를 업데이트합니다.
- PATCH (UPDATE) : 리소스 업데이트 서버에서 (클라이언트가 제공하는 속성을 변경합니다).
- DELETE (삭제) : 서버에서 자원을 삭제합니다.
이 명사이기 때문에 5, 복수의 URL는, URL, 당신은 복수 또는 단수를 사용해야합니까?
이것은 통일 된 요구 사항은 없지만, 일반적인 작업은 분명히 복수가 있어야한다 (모든 기사를 읽기) 등 GET / 기사 등의 컬렉션을, 읽는 것입니다.
더 나은 GET / 기사 / 2 이상의 같은 GET / 기사 등 일관성, 제안 된 사용 복잡한 URL, / 2을 위해서.
6, 피할 다단계 URL
일반적인 상황은 쉽게 멀티 레벨 URL을 작성하는 것입니다, 그래서 자원은 일부 기사의 저자에 대한 접근로, 멀티 - 레벨 분류 할 필요가 있다는 것입니다.
GET / 저자 / 12 / 카테고리 / 2
이 URL은 확장에 도움이되지 않습니다, 의미는 의미를 이해하기 위해, 잠시 동안 자주 위해, 명확하지 않다.
더 나은 아직, 첫 번째 수준뿐만 아니라, 다른 수준의 사용 쿼리 문자열 표현입니다.
GET /authors/12?categories=2
여기에 또 다른 예를 들어, 쿼리 게시 된 기사입니다. 당신은 다음의 URL로 설계 될 수있다.
GET /articles/published
훨씬 더 나은 쿼리 문자열 표현.
GET /articles?published=true
문제
레코드가 다양한 작업에있을 경우 1, 그것을 어떻게 할까?
두 가지 방법이 있습니다 :
- 첫 번째
POST /datas/1?action=reportError
POST /datas/1?action=mark
POST /datas/1?action=assign
- 두 번째
POST /datas/1/reportError
POST /datas/1/mark
POST /datas/1/assign
분명히 두 가지 방법 위의 더 나은 두 번째 것
2, 클라이언트 인증 사용자 이름이나 전화가있는 경우, 어떻게 설계?
그것은 그러한 설계 될 수
GET /users/{userName}?action=check
체크 사용자 이름 동작,
참고 읽기
http://www.ruanyifeng.com/blog/2018/10/restful-api-best-practices.html