REST - 스키마 없는 REST API

드디어 1년 가까이 진행하고 있는 사이드 프로젝트를 발표할 수 있는 용기를 얻었습니다. noREST ->라고 하며 이름에서 알 수 있듯이 이 이름은 noSQL을 간접적으로 참조합니다. 개념이 상당히 비슷하기 때문입니다. noSQL과 마찬가지로 차별화는 noREST의 비스키마 레이아웃입니다. 따라서 기본적으로 고정 인터페이스가 없는 API입니다. 인터페이스 없이 API가 필요한 이유는 무엇입니까? 계약 없이 집을 사는 것과 같습니까?

당신이 맞을 수도 있습니다. API에 고정된 스키마/인터페이스가 없다는 것은 대부분 이상하게 들리고 API의 의도와 어떻게든 모순됩니다. API는 데이터가 어떻게 형성되어야 하는지를 정의하는 프로그래머 인터페이스를 제공하도록 설계되었습니다. 집을 살 때의 구매 계약처럼: 모든 것이 제자리에 있어야 하고, 따라야 할 규칙과 권리가 있으며, 계약을 보장하는 공증인이 있습니다. 계약서의 내용이 유효하지 않은 경우 거래가 서명되지 않습니다.

하지만 커피를 사는 것조차 이미 구매계약이다. 그리고 그들은 대부분 같은 규칙을 따릅니다. 바리스타가 커피를 제공하고 당신은 "무엇이든 그란라떼 초콜릿을 드릴까요?"라고 간단히 말함으로써 계약에 동의합니다. 돈과 "커피"의 교환이 완료되는 즉시 거래가 종료됩니다. 공증인도, 고정 계약도, 서명도 없습니다. 여전히 유효한 구매 계약입니다.

API도 마찬가지입니다. 때로는 기존 스키마 제한 API보다 더 간단하고 쉬운 계약이 필요한 경우가 있습니다. 특히 서버 측 렌더링의 경우 또는 단순히 앱을 긁고 UI 구축에 먼저 집중하려는 경우에 그렇습니다.

이것이 바로 noREST가 구축된 이유입니다. npx @norest/cli를 호출하기만 하면 매우 간단한 규칙(예: 커피 구매)을 따르는 REST 전체 서버를 얻을 수 있습니다. 이러한 규칙은 빠른 개발을 허용하도록 설계되었습니다. 핵심 규칙 중 하나는 스키마가 없다는 것입니다. 끝점은 특수 접두사가 있는 단순히 데이터 자체인 소위 index fragments로 정의됩니다.

POST /api
{
   "name": "foo",
   "price": 10,
   "#_products": {}
}

위의 데이터가 API에 게시된 경우 인덱스 조각GET /api/products이 추가되기 때문에 데이터"#_products": {}를 통해 데이터를 요청할 수 있습니다. 그렇게 하면 모든 데이터를 API에 저장하고 RESTful 방식으로 계속 사용할 수 있습니다. API만을 위한 noSQL과 같습니다. 간단히 noREST라고 합니다.

대부분의 사람들이 모르는 사실: noSQL은 SQL만 의미하는 것이 아닙니다. 이는 단순히 데이터를 쿼리하는 것 이상을 허용한다는 의미입니다. noREST도 마찬가지입니다. 현재 기본적으로 인증, 메타데이터, 참조 및 WebSocket 지원이 있으며 더 많은 플러그인이 계획되어 있습니다.

아이디어가 마음에 든다면 https://notonly.rest의 작은 대화형 놀이터에서 실행 중인 모든 것을 볼 수 있습니다. noREST에 대해 더 자세히 알아보려면 시작하는 가장 좋은 방법은 GitHub page 입니다.

제 작은 사이드 프로젝트를 읽어주셔서 감사합니다. 이에 대한 귀하의 생각을 듣고 싶습니다.

좋은 웹페이지 즐겨찾기