REST API Tutorial #1 – Czym jest REST API?

여러 번 REST API에 대해 들어 보았을 가능성이 큽니다 오늘 나는 그게 정확히 무엇인지 설명 할 것입니다

이 비디오의 정보는 API 디자인 및 사용에 유용합니다 API는 Application Programming Interface의 약자입니다 이것이 정확히 무엇을 의미합니까, 나는 잠시 후에 설명 할 것입니다 인터페이스 정의부터 살펴 보겠습니다 인터페이스는 통신을 허용하는 연결 유형입니다

우리는 사용자 인터페이스, 즉 UI (User Interface) 이러한 인터페이스의 예는 컴퓨터 키보드 또는 스마트 폰 화면입니다 마찬가지로 사용자 인터페이스에는 현재이 영화를 보면서 도움을 얻는 응용 프로그램이 있습니다 인터페이스의 두 번째 유형은 프로그래밍 인터페이스, 즉 정확한 API입니다 우리는 잠시 후에 그의 정의에 들어갈 것입니다 인터페이스의 마지막 유형은 레이아웃 형태의 물리적 인터페이스입니다 예 : 장치 연결 가능 그러한 인터페이스의 예는 USB 커넥터 일 수 있습니다

그렇다면 API는 무엇입니까? API는 단순히 통신의 한 방법입니다 서로 다른 소프트웨어 요소간에 웹 API는 적절하게 준비된 메소드 세트입니다 일반적으로 URI 주소 형태로 사용 가능 소위 endpointów 대표적인 엔드 포인트 및 응답은 다소 유사합니다

여기 주소가 overmentcom/movies 인 GET 쿼리가 있습니다 이에 대한 응답으로 객체 배열을 얻습니다 영화 목록이 들어있다 이 특별한 경우에 그것은 하나의 영화입니다

상상할 수있는 것처럼 편리하고 유용한 API를 설계하십시오 그것은 매우 큰 도전입니다 표준화의 부재로 인해 사용에 추가적인 어려움이 발생합니다 통신이 어려워진다 책 목록을 리턴하는 엔드 포인트의 구조는 다음과 같습니다

기본적으로 동일한 세 가지 종단점이 있습니다 끝점의 모양에 대한 구체적인 규칙은 없습니다 이러한 준비된 API로 작업하면 우리는 문서 우리가 그것과 상호 작용할 때마다 이 경우 REST는 도움말과 함께 제공됩니다 REST는 API 디자인 원칙을 정의하는 표준입니다

웹 API의 경우 HTTP 프로토콜을 기반으로합니다 예를 들어, CRUD (Create Read Update Delete) HTTP 메소드에 해당합니다 REST API 예제는 다음과 똑같습니다 이 경우 특정 엔드 포인트가 그리고 우리는 다음 사람이 어떻게 생겼는지 짐작할 수 없습니다 여기에서 영화에 대한 GET 쿼리는 영화 목록을 반환합니다

동영상에 대한 POST 요청은 새 동영상을 저장합니다 그리고 각각의 영화 / : id에 대한 PUT 쿼리 지정된 ID로 영화를 업데이트합니다 마지막으로 지정된 비디오를 제거하라는 쿼리가 있습니다 REST는 우리에게 큰 자유를 줄 때 따라야 할 몇 가지 간단한 규칙을 정의합니다 이 원칙 중 첫 번째는 통일 인터페이스입니다

인터페이스가 클라이언트와 서버간에 표준화 된 통신을 제공합니다 우리는 여기에 많은 다른 장치를 가지고 있습니다 서버와 통신하는 응용 프로그램 하나의 인터페이스를 통해 이것이 바로이 원리가 말하는 것입니다 이러한 방식으로 하나의 인터페이스를 설계하여 모든 애플리케이션의 요구에 대응합니다

두 번째 원칙은 클라이언트 – 서버입니다 응용 프로그램간에 명확하게 구분 된 구분이 있음을 나타냅니다 클라이언트와 서버 측에서 작동합니다 이러한 방식으로, 이러한 응용 프로그램은 독립적으로 개발할 수 있으며 추가적인 유연성 세 번째 규칙은 무국적자입니다

모든 쿼리에는 완전한 정보 집합이 있어야한다고 그것의 정확한 완료를 위해 필요한 따라서 서버는 고객 상태 정보를 저장할 수 없습니다 답례로, 이것은 그가 질문을 보낼 때마다 클라이언트입니다 서버를 허용하는 일련의 정보를 제공합니다 주어진 고객이 주어진 자원에 대한 액세스 권한을 갖고 있는지 여부를 결정합니다

네 번째 규칙 : 캐시 가능 API는 성능 향상을 위해 데이터 캐싱을 지원해야합니다 서버는 API로부터 많은 수의 쿼리를로드 할 수 있습니다 이 경우 정보를 캐시에 저장하는 것이 좋습니다 물론, 그러한 가능성이 있다면 서버는 어떤 데이터가 캐싱 될 수 있고 어떤 데이터가 아닌지를 알려야합니다

다섯 번째 규칙은 "계층화 된 시스템" 이 경우 서버는 다음과 같은 방식으로 설계되어야합니다 고객이 쿼리를 보낼 때 대답을 얻을 수 있도록 지식이 없어도 다른 쪽에서 무슨 일이 일어나고 있는지 따라서 우리는 여기에 클라이언트를 가지고 있습니다이 클라이언트는 전에 서버와 서버에 쿼리를 보냅니다 응답을 준비하고 몇 가지 추가 작업을 수행 할 수 있습니다

고객은 그 사실을 알 필요가 없습니다 이러한 설계된 시스템은 클라이언트와 서버 간의 상호 작용을 확실히 촉진합니다 마지막 옵션은 "주문형 코드"입니다 이 원칙은 코드 조각 (예 : JavaScript)을 전송할 가능성을 제공합니다 이는 고객 측에서 만들 수 있습니다

따라서 서버는 클라이언트가 자유롭게 사용할 수있는 코드를 반환합니다 이 시점에서 REST API가 무엇인지 일반 아이디어가 있어야합니다 그것의 기본 원리를 안다 아직도 뭔가 명확하지 않은 경우 걱정하지 마십시오 우리가 오늘 말한 모든 것, 우리는 실제로 후속 영화에서

듣다!

Introduction to Beachcasts – web development PHP Videos by Adam Culp

모두와 주셔서 감사합니다 감사합니다

내 이름은 해변 손님에게 맞추기위한거야 Adam Culp와 나는 이것을 위해 만든 몇 가지 다른 이유 중 하나는 왜 내가 해변에 던지기 시작한 이유는 컨설턴트로서 나는 항상 그런 것은 아니기 때문에 조사 할 시간이 많이 걸린다 항상 내 프로그램을 짜는데 많은 시간을 얻는다 우리와 똑같은 것을 배워라 개발자는 종종 학습 곡선을 유지합니다

임시 응용 프로그램을 만들어서 새롭고 놀기 기술 및 나는 다만 얻지 않는다 많은 시간을 갖고 싶습니다 그래서 나는 해변 캐스팅을 나의 놀이터를 만들면 내가 만들 수있다 몇 가지 신기술을 가진 것들은 새로운 것들로 놀아 라 새로운 도구 중 일부 프레임 워크 최근에 저는 새로운 것을 배우고 싶었습니다 조금 더 나은 프레임 워크 Zend Expressive 나도 원했어

Doctrine ORM을 배우고 자신을 가르쳐주세요 함께 다른 도구를 사용하는 그래서 나는 방법으로 Beachcasts를 사용할 것이다 그 정보를 공유하면 그것을 할거야 나는 잘 기록 할거야 그것을 공유하고 나에게 다른 것을 가지고있다 이 일을하고 그들이 한 친구들 꽤 잘 그래서 나는 그것을 줄 것이다

시험 또한 그것이 어떻게 진행되는지 볼 수 있습니다 forewarning의 말은하지 않을 것이다 완전해질 필요가 없다 그것은 내가 새롭고 재미있게 놀고있는 바로 그 것이다 기술을 공유하고 당신과 공유 잘하면 우리는 모두에게서 배울 수 있습니다

나는 긍정적 인 일이되기를 바란다 그래서 더 이상 지체하지 않고 나는 계속해서이 첫 번째 장면을 닫으십시오 나는 할부금을 받고 다음에 녹음 중일 때 나는 바쁘다 내가 얼마나 자주 할 수 있는지 이것들 내가 일주일에 두 번 또는 일주일에 한 번 또는 한 달에 한 번 나는 그걸 알아낼 수 있을지 잘 모르겠다

나가서 그러나 지금 당장 나는 생각하고있다 어쩌면 일주일에 한 번 우린 괜찮을거야 그래서 오늘은 그것을하는 나의 처음 주간이다 어쩌면 나는 그것을 매회하려고 노력할 것이다 목요일에 우리가 볼거야, 목요일에 경향이있다

대부분의 경우에 나를 위해 좋습니다 그래서 우리는 볼 것입니다 그 일이 어떻게 진행되는지 그러나 그 동안에 잘하면 나는 다음 에피소드를 꺼낸다 레알 이 후 빠른 시간 내에 당신은 그것을 즐길 수있는 감사합니다

REST ou GraphQL ? Exemples illustrés avec Symfony et API Platform – Kévin Dunglas – PHP Tour 2018

안녕하세요 나는 이미 어제 여기에 있었고, 나는 프리젠 테이션에 빨리 전진 할 것이다 : Kévin Dunglas 저는 Les-Tilleuls에서 일하면서 Symfony 핵심 팀의 일원입니다

그리고 저는이 도구의 첫 번째 저서 (오늘 발표 할 형식과 함께 사용하는 형식)의 작성자였습니다 Les-Tilleuls는 여전히 어제와 같습니다 항상 자체 관리됩니다 급여는 항상 똑같이 나누어집니다 우리는 릴 (Lille)과 파리 (Paris)의 사람들을 항상 찾고 있습니다

주저하지 말고 저희에게 연락하십시오! 그렇다면 API 플랫폼이란 무엇입니까? 누가이 솔루션을 이미 사용 했습니까? 어쨌든 많은 사람들이 좋아 따라서 API Platform은 완전한 스택 프레임 워크입니다 우리는 이것이 매우 중요한 개념이라는 것을 알게 될 것입니다 우리는 오늘 PHP 부분에 대해 주로 이야기 할 것입니다 그러나 그것은 구성 요소를 포함하는 프레임 워크입니다

서버 측 및 클라이언트 측 응용 프로그램 API로 구동됩니다 즉, 피벗 포인트, 우리의 응용 프로그램의 초점 그것은 API가 될 것이며, 우리는 다른 형식을 폭로 할 수있는 서버 측 API를 만들 것입니다 표준 또는 개방형 (우리는 바로 그 차이점을 보게 될 것입니다), 둘 다 가장 인기있는 패턴 (즉, REST와 Facebook의 GraphQL 형식 모두 지원됨) 이러한 클라이언트 측 API가 다음을 수행하도록 소비해야합니다 프로그레시브 웹 앱,보다 전통적인 웹 사이트, 모바일 앱 또는 연결된 객체 따라서 API 플랫폼 패키지에서 이 주요 구성 요소는 역사적인 구성 요소입니다 가장 길었던 것, 가장 성숙한 것, 아마 가장 많이 사용되었고 가장 잘 알려진 것 그것은 첫째로 REST와 GraphQL 웹 API를 노출하기 쉽게 만드는 PHP 라이브러리입니다

Symfony와 우리가 반환 할 배포본을 통합하는 번들이 더 많습니다 Symfony Flex 애플리케이션 (Symfony 4 포함)과 사전 설치된 REST 또는 GraphQL API를 생성하는 데 필요한 모든 패키지가 포함되어 있습니다 또한 덜 알려진 구성 요소 : 모델 생성기, 누가 우리가 가고있는 공개 Schemaorg 형식 (오픈 어휘 Schemaorg)을 읽을 수 있습니까? 우리는 많은 타입의 많은 타입을 포함하는이 열린 어휘에서 바로 돌아올 것입니다 큰 제조 업체

예를 들어, 폭스 바겐에 의해 공헌 된 차량 및 자동차에 대한 매우 정확한 데이터 모델 매우 정확한 데이터 모델이있다 출판 될 수있는 서류, 책 등 학계에 의해 만들어진 더블린 코어 변화 그래서 우리는 기존의 모델을 활용할 수 있습니다 그리고 PHP 데이터 모델을 생성합니다 : 따라서 속성을 가진 클래스 집합, guetters the setters, PHP doc, Symfony의 유효성 검사 규칙, ORM Doctrine과의 매핑, 아마도 API Platform을 사용한 매핑 실제로 독립적 인 구성 요소이며 각 구성 요소는 완전히 독립적이며 다른 구성 요소없이 하나씩 사용할 수 있습니다 따라서 이미 존재하는 것으로부터 데이터 모델을 생성하고자한다면 API 플랫폼을 사용하지 않는 기존 PHP 응용 프로그램에서이 구성 요소는 계속 작동합니다

그런 다음 Javascript로 만들어진 두 개의 구성 요소가 있습니다 그리고 그것은 꽤 우습다 우리는 PHP 둘러보기에 있지만, 몇 달 동안 Github은 API Plateform 프로젝트를 재조정하여 Javascript 프로젝트라고 부릅니다! 그것은 좋거나 개발자들에게 달려 있다는 것이 좋지 않습니다 그래서 우리는 꽤 흥미로운 두 가지 구성 요소를 가지고 있습니다 : 관리 구성 요소 EasyAdmin 또는 Sonata를 이미 사용했다면 시각적으로는 소재 디자인처럼 보이고 완전히 동적 인 클라이언트가 사용된다는 것을 제외하고는 최신 REST 또는 GraphQL API의 검색 가능성 기능 API의 URL 만 있으면 관리 인터페이스를 동적으로 구축 할 수 있습니다

이 API를 위해 Sonata와 비슷한 것으로 미리 알 필요가 없습니다 이 API를 공개하는 유형 및 연산은 이러한 새로운 형식 덕분에 완전히 동적 인 자체 탐색 가능합니다 이 도구는 Generator 클라이언트가 Nodejs로 작성된 명령 줄 도구입니다 같은 문서는 문서를 읽는다

노출 될 수있는 최신 API 플랫폼 API 서버 구성 요소뿐만 아니라 파이썬에서 수행 할 수있는 이러한 개방형 포맷을 존중하는 모든 도구들, 자바에서, 프로그래밍 언어가 아주 많아서이 API를 위해 생성 될 것이다 프로그레시브 웹 앱 – Symfony 나 Laravel의 MakerBundle을 시각적으로 생성하는 것처럼 보입니다 CRUD의 응용 목록 페이지, 상세 페이지, 편집 페이지, 삭제 페이지 등이 있습니다 관리자와는 달리, 모든 것이 REST API를 통해 진행되며 Driven API 프로젝트가됩니다 직접 액세스 할 수 없습니다

직접 액세스 할 수 없게 될 것입니다 데이터베이스 또는 PHP 코드를 완료하면 공개 된 형식을 통해 모든 것이 API를 통해 전달됩니다 API와이 두 가지 구성 요소에 의해 정말로 중요한 것은 그것이 작동한다는 것입니다 JSON-LD를 지원하는 API가 있고 곧 Swagger를 사용할 수 있다면 Swagger OpenAPI는 서버 측 프로그래밍 언어가 무엇이든간에 작동합니다 반대로 서버 측 구성 요소는 클라이언트 측 프로그래밍 언어와 상관없이 작동합니다

Javascript, Python, Go 또는 Swift 등, Kotlin, 그런 종류의 것입니다 도구의 경우이 Javascript 도구에 대한 지원이 있습니다 2 개의 Javascript 프레임 워크 (물론 우리는 서버 부분이나 클라이언트 부분을위한 바퀴를 다시 만들지 않았습니다) 우리는 React와 Redux를 사용하는 Progressive Web App을 생성 할 수 있습니다 Vuejs를 지원하는 프로그레시브 웹 앱을 생성 할 수도 있습니다

좋아하는 프레임 워크를 선택할 수 있습니다 실제로 우리는 다른 형식을 지원하기 위해 스켈레톤을 추가 할 수 있습니다 실험적인 해골이 있습니다 React Apple Store, iOS 또는에 패키지로 제공되는 기본 앱 Google Play 스토어 따라서 기본적으로 오늘날 우리가 가장 많이 말할 서버 구성 요소는 많은 형식을 지원합니다 어제 Symfony 시리얼 라이저에 대한 나의 conf

에 온다면, 네이티브로 지원되는 몇 가지 포맷이 있다는 것을 알았습니다 Symfony 시리얼 라이저에서 사실 API 플랫폼은 주로 Symfony 시리얼 라이저를 기반으로하며 그에게 소위 하이퍼 미디어 기능을 가져라 우리는 그것이 무엇인지 후에 조금 더 자세하게 볼 것입니다 주요 아이디어는 모든 PHP 객체가 변환 될 수 있다는 것입니다

JSON (Symfony 시리얼 라이저가하는 것) 에서뿐만 아니라 URL에서도 사용할 수 있습니다 우리는 직접 일치를 할 수있을 것입니다 1은 1입니다 각 객체는 액세스 할 수있는 공개 URL로 식별됩니다 그것이 하이퍼 미디어 포맷이 가져다주는 것입니다

이것은 Plateform API가 단순한 Symfony 시리얼 라이저와 비교하여 가져 오는 것입니다 그래서 12 월 API 플랫폼의 안정 버전에서는 12 월 이래로 REST가 아닌 형식의 지원이 있다고합니다 GraphQL 그리고 이것은 오늘날 REST와 이야기 할 것입니다 어쨌든 API Plateform에이를 추가하는 것은 큰 일이었습니다

프레임 워크의 기본 디자인 주로 Alan Poulain입니다 그는이 지원을 추가 한 GraphQL에서 거대한 직업에 대해 감사 드리고 싶습니다 4500 개가 넘습니다 약 4500 줄의 코드가 추가되어 거의 모든 인프라를 재사용 할 수 있습니다

API 플랫폼에서 REST를 위해 제공되었습니다 따라서 GraphQL에 매우 특정한 많은 것들이 있습니다 GraphQL은 공식적인 확장 기능이있는 약간 복잡한 형식입니다 그리고 갑자기 Platform API에서 기본 GraphQL 형식에 대한 지원이 제공됩니다 모든 확장 기능은 우리가 직후에 제시 할 Relay 확장 기능을 포함합니다

어떻게 작동합니까? 어떻게 정착합니까? 엔지니어링 학위를받을 필요가 없습니다! 우리는 그것을 사용할 수있는 개발자조차 가지고 있지 않은 고객이 있습니다 일반적으로 지금까지는 모든 사람에게 좋을 것입니다 우리는 기따 웃에 갈거야 우리는 사이트에 가서 아카이브를 다운로드합니다 그것은 압축 해제됩니다

도킹해야합니다 유일한 중독은 기계의 Docker입니다 작성할 필요가 없으며 PHP가 필요없고 아무 것도 필요하지 않습니다 PostgreSQL 서버가 필요 없습니다 우리는 "docker-compose up"이라고 입력합니다

그런 다음 우리는 필요한 모든 것을 가지고 있습니다 우리는 클라이언트에서 사용할 수있는 작은 테스트 API를 가지고 있습니다 관리 인터페이스와 우리가 우리가 개발을 시작하는 데 필요한 모든 것 우리는 또한 개발 및 생산을 위해 잘 어울리는 모든 컨테이너와 함께 제공되는이 설정 Docker를 사용할 수 있습니다 주요 클라우드 플랫폼에서 몇 분 내에 전체 API 플랫폼 응용 프로그램을 배포 할 수 있습니다 Google Google Cloud Platform, Azure 및 Amazon ECS는 원주민 인 Kubernetes의 지원 덕분입니다

그래서 우리가 시작할 때, 우리는이 페이지를 가지고 있습니다이 페이지는 React에서 만들어졌으며,이 컨테이너에서 우리는 생성 할 수 있습니다 프로그레시브 웹 앱 프로그레시브 웹 앱에 대해 어제의 이야기가 있다면, JS에서 만든 슈퍼 스파입니다 CSS는 HTML이지만, 휴대 전화의 기본 앱으로 실행할 수 있습니다

네트워크가 없을 때 오프라인으로 작동하고 연결을 재개 할 수있는 사용자, 새 API를 사용하는 사용자 HTML5 및 ES6 ES7은 이전보다 훨씬 더 진보 된 작업을 수행 할 수 있습니다 이 컨테이너에서 생성 할 수 있습니다 당신은 작은 의사 페이지를 가지고 있으며, 작은 기능을 가진 API 작은 테스트 엔드 포인트 (물론 당신이 정말로 개발하기 시작할 때 삭제할 것입니다) 자동으로 생성되는 Swagger 문서 (다른 것들 중에서)와 Swagger UI JSON 형식이 아닌 사람이 읽을 수있는 문서를 갖기 위해 특별한 작은 주제와 통합되어 있습니다 마지막으로 마지막 컨테이너가 있습니다 어떤 동적 인 관리자 인터페이스 (내가 전에 언급 한) 예를 들어, 완전히 동적으로 클라이언트 측에서 생성됩니다 컨테이너에 미리 제공되는 테스트 API의 경우

그래서 우리는 변화 할 것이고, 우리는 클라이언트 부분에 머 무르지 않을 것입니다 그러나 그것이 꽤 잘 작동한다는 것을 알아라 그것은 (작은 JS를하는 사람들)에 기반을두고 있으며, admin-on-rest 라이브러리는 react-admin으로 이름이 바뀌 었습니다 François Zaninotto의 상자 인 Marmelab이라는 프랑스 상자 그래서 모든 것은이 라이브러리를 기반으로합니다

그래서 거기에는 모든 클라이언트 구성 요소가 Platform API 서버로 있습니다 Docker 설정이 정상입니다 흥미로운 작은 트랙, API 플랫폼없이 Symfony를 사용한다면 API 플랫폼을 복제하고 docker라는 폴더를 복사하여 붙여 넣을 수 있습니다 설정은 모든 Symfony 4 프로젝트에서 작동합니다 그것은 테스트를 거쳤으며 모든 것이 그렇게 오히려 실용적입니다

네이티브 PostgreSQL 서버가 있습니다 PostgreSQL을 선택했지만 사실 Doctrine이 지원하는 서버를 사용할 수 있습니다 내가 반환 할 캐시 메커니즘이 있습니다 배포판을 거치지 않고 API 플랫폼을 설치하면 컨테이너에 미리 설치된 Varnish가 사용 중지됩니다 Dev에서 HTTPS 및 HTTP2를 지원합니다 일부 기능은 HTTPS 및 HTTP2에서만 액세스 할 수 있기 때문에 JS 개발에 유용합니다

그리고 당신은 당신이 전에 이야기했던 Kubernetes에 쉬운 배치를 가지고 있습니다 따라서 도커와 모든 JS 스택 등을 운반하고 싶지 않으면 작은 API를 만들고 싶을뿐입니다 다른 해결책이 있습니다 당신은 Symfony 4를 설치합니다 최소한의 버전 인 해골을 사용하고 웹 사이트가 아니라면 다음과 같이 입력하십시오 : "작성 req api" 그것은 Symfony 요리법과의 공식적인 통합이며 API 플랫폼 서버 부분을 얻습니다

가능한 최소한의 의존성을 가진 미니멀리스트이지만 슈퍼 일을 쉽게하기에 충분하다 통합 PHP 웹 서버 및 모든 우리가 여기서 볼 수있는 것은 당신도 할 수있을 것입니다 그것이 바로 우리가 해골을 설치했을 때입니다 Symfony와 우리는 API Plateform을 실행하여 더 이상 HTTPS가있는 테스트가 더 이상 존재하지 않으며 더 많은 HTTP2가 있습니다 한 쌍의 물건이 제거되었습니다

하지만 이것은 순수한 PHP 일 뿐이며 Symfony 개발을 할 때 우리가 보았던 것과 더 가깝습니다 따라서 기본적으로 API 플랫폼은 하나의 형식 만 사용 가능하며 JSON-LD입니다 GraphQL 지원을 원한다면, 그리스에 손이 조금 더 걸릴 것입니다 땀을 몇 방울 떨어 뜨리면 GraphQL의 지원을 설치해야합니다 그래서 GraphQL, 우리는 직후에 볼 것입니다

특정 형식인데 JSON이 아니며 XML이 아니며 JSON과 약간 비슷하지만 특정 구문 분석기가 필요한 특정 형식 우리는 그것을 재개발하는 것을 즐겁게 생각하지 못했습니다 우리는 잘 작동하는 도서관을 가져갔습니다 조금만 더하십시오 이것이 API 플랫폼에서 사용 된 것이고, API 플랫폼에서도 사용됩니다 overblog / GraphQLBundle을위한 히트 API 플랫폼의 GraphQL 지원을 활성화하십시오

추가적으로 설치해야합니다 기본적으로 존재하지 않으며, 상황이 점점 어려워집니다 실제로 실제로는 그렇지 않습니다

그냥 해보면 GraphQL API가 데모 API에서 작동한다는 것은 잘 알고 있습니다 여기서는 작동하는 GraphQL API, "/ graphql"이라고하는 끝 점 및 그래픽 인터페이스가 있습니다 Swagger UI의 방식으로 문서를 발견 할 수있게 해주는 GraphiQL 귀하의 GraphQL API를 사용하고 질문을 시작하여 답변을 즉시 볼 수 있습니다 GraphQL 마침내 그렇게 복잡하지 않습니다 그래서 우리는 첫 번째 GraphQL 쿼리를 보았습니다

GraphQL에서 충분히 흥미 롭습니다 따라서이 언어는 JSON과 유사하지만 유효한 JSON이 아닌 검색어 설명 언어처럼 보이는 언어입니다 그러나 다른 한편으로는 매우 우아하고 극단적 인 사람입니다 이 요청은 무엇입니까? 단일 HTTP 요청에서 두 개의 GraphQL 쿼리를로드합니다 하나는 내 끝점 인 "greeting"을 요청하고 ID 1, "/ greetings / 1"이 정확하고이 객체의 경우, 지시 할 고객입니다

복구하려는 데이터와이 경우에는이 리소스의 name 속성을 가져 오려고합니다 우리는 1 초를 회복합니다 그래서 매우 흥미로운 첫 번째 기능 : 하나의 HTTP 요청에 원하는만큼 많은 요청을 넣을 수있는 기능 이에 대한 응답으로 GraphQL 서버가 JSON을 반환합니다 그것은 조금 다릅니다 REST, 우리는 우리가 보내는 것 사이에 동등 함이 없습니다

우리가 회복 한 것 우리는 여전히 "데이터"키를 사용할 수 있습니다 그리고 우리는 우리의 요청에 대한 답을 얻습니다 그래서 우리는 우리의 객체 "/ greetings / 1"의 Hello 속성, 속성 이름 용서, 우리의 속성 이름 우리의 자원 "/ greetings / 3"을 처리하십시오 그때 좋습니다

하지만 여전히 질문 할 수있는 질문이 있습니다 이유는 무엇입니까? 누가 GraphQL을 이미 사용 했습니까? 좋아, 꽤 인기가있어 이미 Rest API를 만든 사람은 누구입니까? 정말 지워? 좀 덜 괜찮아 좀 더 자세하게 이야기하겠습니다 그리고 이미 REST API에 누가 문제가 있습니까? 그렇다면 왜 GraphQL인가? GraphQL은 더 나은 REST입니다! REST 2

0이 여기에 있으며 GraphQL이라고 불립니다! 잘 그것은 그것이 그렇게 나쁘지 않은 것처럼 보였다, 약간 오래되었던 REST GraphQL은 REST 킬러입니다 또는이 하나가 내가 가장 좋아하는 API입니다 REST API는 REST-in-peace API를 사용합니다 좋아, 선험적이다 일단 우리가 GraphQL을 가지고 있다면 진짜 좋은 이유가 있으며 GraphQL은 REST를 죽일 것입니다

어쨌든 그것은 거대한 것입니다 페이스 북에 의해 시작된이 기술을 둘러싼 버즈 우리는 그것에 관심이 있습니다 우리는 우리 자신에게 말했다 : 그것이 정말로 멋지 기 때문에 우리는 그것을지지해야만한다! ! 겁탈 자! 우리는 흥미로운 부분이 있다는 것을 보게 될 것입니다 아마도 조금 있습니다 과대 평가 및 REST (실제 REST)는 다소 과소 평가 될 수 있습니다

그건 개인적인 의견입니다 그렇다면 GraphQL은 무엇입니까? 그것은 데이터의 쿼리 언어입니다 이것이 GraphQL의 가장 중요한 것입니다 부수적으로 API 형식이지만 주로 외부에 노출되는 데이터에 대한 쿼리 형식입니다 결국 그것은 장르입니다

전용 웹 API 전용의 최고급 SQL로 인터넷 위의 네트워크 계층에서 작동하며보다 구체적으로 HTTP 프로토콜의 기능을 이용하지 않더라도 HTTP보다 우선합니다 따라서 특별히 설계된 웹 API를 위해 만들어졌습니다 사실, REST의 대안으로 판매되고 있습니다 사양으로 공개 된 형식입니다 공개적으로 페이스 북이 만든 공개 사이트이지만 표준이 아닙니다

중요한 일이 될 것입니다 실제로는 Facebook에 속한 것입니다 그들은 우리가 기여할 수있는 커뮤니티에 대한 액세스 권한을 남겨 뒀지 만 페이스 북 만이 관리하고 주도합니다 뭔가 좋은데 게이트웨이, API 게이트웨이에 대해서는 2015 년에 시작하면 결국 조금씩 볼 수 있습니다

그리고 자원 지향적 인 API 형식 인 REST와는 달리, 이것은 서비스 지향적 인 시스템입니다 즉, SOAP과 더 비슷합니다 우리가 오히려 원격 프로 시저를 호출하고 반대로 REST에 해당하는 데이터를 복구하려면 오히려 차이가있는 노출 된 리소스에 대해 HTTP와 상호 작용합니다 디자인의 기본 우리는 갑자기 보일 것입니다, 둘은 오히려 보완 될 수 있습니다

어떻게 작동합니까? GraphQL의 큰 관심은 고객이 필요한 데이터를 요청할 수 있습니다 그래서 그것은 과도하게 가져 오는 문제입니다 조금 더 자세하게 살펴 보겠습니다 그러나 그가 필요로하는 모든 데이터를 하나의 쿼리로 복구하십시오 따라서 우리가 필요로하는 모바일 앱을 상상할 수 있습니다

가장 인기있는 최신 기사 인 사용자 중 내가 승진 한 제품을 작성하십시오 나는 한 가지 요청으로 모든 것을 회복 할 수있다 REST에서 더 어려운 것은 사실 GraphQL의 큰 관심사입니다 고객이 필요한 것을 설명합니다 그것은 일종의 보스입니다

우리는이 요청을 서버에 보내고, 서버는 내가 요청한 것을 정확하게 보냅니다 확실한가요? 그래서, GraphQL 사이트에서 제공됩니다이 사이트는 문서 작업과 사이트가 매우 잘되어 있습니다 읽으라고 권유합니다 먼저 우리는 데이터 유형과 우리가 노출하는 국가의 API 그러면 우리는 GraphQL 쿼리 언어로 스키마를 기술 한이 API를 쿼리하십시오

그리고 JSON 출력은 실제로 GraphQL의 기본 원리입니다 그래서 사양에서, 우리는 다른 주요 기능을 가지고 있으며, 우리는 요청을 관리합니다 (우리는 세부적으로 보았습니다), 우리는 돌연변이의 관리를 가지고 있습니다 이것이 서버에서 상태를 변경할 수있게 해줍니다 우리는 그것이 서면의지지라고 말할 수 있습니다 실제로 그것은 정말로 될 것입니다

원격 프로 시저의 지향 호출, 우리는 실행할 수 있습니다 예를 들어 외부 코드를 사용하여 사용자 또는 그 물건을 주문 업데이트합니다 우리는 실험적인 사양은 여전히 ​​완벽하지는 않지만 좋은 점은 (개인적으로 GraphQL에서 가장 좋아하는 부분) 구독 정보 서버에서 데이터를 쿼리하고이 데이터가 언제든지 수정 될 때 서버에 알릴 수있는 아이디어가 있습니다 다른 클라이언트, 푸시 알림을 받고 싶습니다 갑자기 서버가 예를 들어 모바일 앱을 통해 장바구니가 변경되어 고객이 사무실을 밀고 나갈 때까지 실시간으로 즉시 변경됩니다 사용자 경험 측면에서 정말 좋습니다

즉, API와 상호 작용하는 모든 채널, 모든 클라이언트가 실시간으로 업데이트되고 푸시됩니다 유일한 문제는 Apollo라는 가장 널리 사용되는 구현에서 Websocket을 사용하므로 작동하지 않거나 매우 어렵다는 것입니다 실험 물건 (예 : 래칫 (ratchet) 및 PHP의 모든 것들)을 사용하면 어렵습니다 결과적으로 Nodejs, Go, 또는 그 종류의 언어

그런 다음 타입 시스템과 인트로 스펙 션 메커니즘이 있습니다 그래서 약간 비슷합니다 PHP 리플렉션 API (바로 뒤에서 보겠습니다) 우리는 매우 제한된 오류에 대한 명세를 가지고 있지만, 우리가 이미 본 일과 가능성을 만듭니다 가능한 한 병렬 처리하고 단일 HTTP 요청으로 여러 GraphQL 쿼리를 보냅니다 (HTTP 여부) 그런 다음 확장이 있습니다

이것이 GraphQL 스펙에있는 것이었고 우리는 GraphQL이라는 매우 유명한 확장을했습니다 : Relay GraphQL 사양 릴레이는 사실 페이스 북의 React 라이브러리이다 GraphQL의 클라이언트 인 Facebook에 의해 만들어지며 매우 인기 있고 매우 편리합니다 사실,이 클라이언트가 걸을 수 있으려면 서버가 다소 엄격한 형식을 따라야합니다 그래서 우리는 Node라는 개념을 가지고 있습니다

Java의 Object 유형과 같습니다 즉, 확장 된 슈퍼 오브젝트입니다 모든 유형의 GraphQL API는 모두 Node 유형입니다 그래서 우리는 객체 식별과 관련된 패턴을 가지고 있습니다 : GraphQL 객체의 ID는 반드시 고유해야합니다 1 일 수는 없습니다

UUID, URI (우리는 그 이후에 보게 될 것입니다)와 같습니다 노드가 1 2 3 4 인 객체를 요청할 때처럼, User 유형의 객체이거나 Cart 유형의 객체 인 경우에도 항상 복구됩니다 그것은 오히려 실용적이고 오히려 잘 생각됩니다 그런 다음 페이지 매김을 관리하기위한 전용 구조가 있습니다 (이후에 볼 것입니다) CRUD 지향적 돌연변이를위한 전용 포맷을 가지고있다 이 모든 것은 API 플랫폼에서 지원됩니다

다시 구현할 필요가 없습니다 이미 GraphQL로 전환 한 몇몇 거물들이 있습니다 Github의 경우입니다 Graphith와 Relay 인 Github API에 대한 쿼리 인 약간 더 완벽한 예제 나는 나의 유형 조직을 타자를 친다, 나는 매개 변수에서 통나무를 통과한다

티렐 (Tilleul)의 협력자들로부터 최근 공개 된 모든 기고 물을 되찾고 싶습니다 조직에서는이 조직의 ID 및 이름 필드 만 원합니다 그런 다음 원하는 방식으로 관계를 탐색하고 원하는 데이터를 정확히 물어볼 수 있습니다 저기, Tilleuls 직원의 목록, 첫 번째 100 싶습니다 여기에 컬렉션이있어서 구조가 있습니다

페이지 매김을 위해 릴레이에 의해 부과 된 데이터 내 컬렉션의 각 노드에 대해, 그래서 각 직원마다 ID, 로그인, 이름이 필요합니다 그런 다음이 직원의 공헌 목록을 원합니다 일부 매개 변수와 각 기여에 대해 우리가 기여한 Github 저장소, ID와 그의 이름이 필요합니다 정확히 내가 원하는 것을 말합니다 (다소 복잡한 쿼리입니다)

한 가지 요청으로 내가 원하는 것을 가지고 있으며 내가 아는 것을 게시 할 수 있습니다 우리는 실제로 GraphQL을 돌아 다녔습니다 그렇게 간단하고, 어쩌면 REST,이게 뭐야? 로이 필딩 (Roy Fielding) 논문이며 건축 스타일입니다 GraphQL과 달리 지정된 형식입니다 이것은 HTTP 프로토콜의 기능을 최대한 활용하는 것입니다 REST는 다른 사람들과 마찬가지로 API 트위터 (Facebook Twitter 앱)에서 절대적으로 존중하는 마케팅 용어로 사용되었습니다 필딩의 논문에서 정의 된 개념이 아닙니다

따라서 REST라고 불리는 것과 실제로 REST라는 것 사이에는 약간의 혼란이 있습니다 실제 REST API는 하이퍼 미디어라고합니다 이 혼란을 제거하기 위해 또 다른 용어가 사용됩니다 "마케팅"은 HATEOAS입니다 REST는 GraphQL과 달리 SOAP와 달리 자원 지향적 인 프로토콜입니다

아주 오랜 시간 동안 진짜 하이퍼 미디어 REST API를 만드는 방법에 대한 약간의 정글이었다 우리에게는 개념이 있었지만 형식은 없었습니다 다행히도 최근 몇 년 동안 우리는 이제 형식과 표준을 보유하고 있습니다 자체 검색 가능한 하이퍼 미디어 REST API의 작동 방식을 구체적으로 지정합니다 대부분은 W3C에 의해 설정된 표준입니다

이것은 열린 웹의 작동 방식을 표준화 한 조직과 동일합니다 HTML (현재 WhatWG가 있음) HTML, CSS, XML, RDF 열려있는 웹의 기초가되는 이러한 모든 형식은 W3C에 의해 정의되며 모든 브라우저와 개발자가 구현합니다 이제 REST API에 대해 비슷한 형식이 있습니다 첫 번째는 2014 년에 Google이 W3C에 기고 한 JSON-LD입니다

JSON 일뿐입니다 복잡한 유형 지원을 추가하고 기능을 추가 할 수있는 메타 데이터가 있습니다 하이퍼 미디어 (따라서 API 간의 링크 관리) 나는 여기에 너무 자세히 설명하지 않을 것이다 나는 이미 그것에 대해 confs를 주었다

세부 사항에 관심이 있다면 당신은 돌아올 것입니다 우리는 또한 Generator에 대해 이야기 한 Schemaorg를 가지고 있으므로 공개 된 어휘입니다 실제로는 사양이 아닙니다 오히려 허용하는 유형의 집합입니다

정확히 같은 이름과 동일한 유형의 서로 다른 API를 사용하는 동일한 유형의 데이터로 노출합니다 예를 들어, 그것이 Google의 리치 스 니펫이 작동하는 이유입니다 웹 사이트에 Schemaorg 마크 업을 추가해야합니다 이벤트, 이벤트의 이름은 그 장소의 가격입니다

하나는이 장소에서 티켓을 구입합니다 사양, Schemaorg에서 제공하는 이름 등이 있습니다 사실 공개 된 API를 노출하기 위해 수행되었습니다 이벤트 티켓을 검색 할 수있는 API를 제공하는 5 개의 사이트가있는 경우 모든 아이디어를 따르는 것이 좋습니다

이 명명 규칙은 JSON-LD 형식 (지난 가을 이후 Schemaorg의 기본 형식 임)과 함께 사용합니다 나는 모든 API를 소비 할 수있는 단일 일반 클라이언트가 필요합니다 이 API의 특정 문서를 읽어야합니다 이것은 실제로 하이퍼 미디어, REST, 열린 웹의 문제입니다

마지막으로 JSON-LD의 확장 인 Hydra를 사용해야합니다이 작업은 같은 작업 그룹에서 Google 등의 동일한 사용자가 JSON-LD (읽기 전용)를 추가하면됩니다 JSON-LD를위한 일종의 수퍼 슈거입니다 내 API를 노출하는 모든 유형을 설명 할 수 있습니다 내 API에서 사용할 수있는 모든 작업

내 속성이 읽혀 있습니까? 서면으로? 등등 그래서 우리는 API의 전체 구조를 알 수 있습니다 그것은 GraphQL 스키마와 동일한 것입니다 (아주 아주 가깝습니다) 둘 사이에는 많은 유사점이 있습니다 거기에 이러한 형식을 사용하는 다른 큰 선수가 있습니다 다른 사람들과 BBC가 있습니다

가장 잘 알려진 예는이 API를 포함한 새로운 Google API입니다 JSON입니다 REST와 비슷합니다 요청이 직접 전달 된 것을 볼 수 있습니다 우리가 항상 해왔 던 것처럼 url 매개 변수에서

이 문서는 JSON입니다 JSON-LD에 정의 된 @로 시작하는 일부 키가 예약되어 있다는 점을 제외하면, 메타 데이터를 상당히 고급화 할 수 있습니다 예를 들어, 특정 유형 JSON에서는 복잡한 유형이 없기 때문입니다 JSON-LD에는 복잡한 제목이 있습니다

그리고 매핑 Schemaorg 어휘를 사용합니다 예를 들어,이 설명은 Schemaorg / description에 해당합니다 우리는 조금 더 후에 볼 것입니다

우리는 모두 서로에게 좋은 대체 형식을 많이 가지고 있습니다 예 : json : api 및 OpenAPI 모두 매우 흥미 롭지 만 GraphQL과 같은 표준은 아닙니다 주제를 조금 더 깊이 들어 봅시다 API 플랫폼으로 자체 API를 만들어 보겠습니다

나는 당신에게 모든 기능을 발견하게하고, 이러한 모든 복잡한 형식을 따르는 하이퍼 미디어 REST API를 만드는 방법에 대해 1 시간 반을 가지고 있습니다 그리고 이러한 모든 복잡한 형식을 따르는 GraphQL API도 있습니다 그러나 나는 그것을 할 것이라고 생각합니다 충분히 쉽습니다 API Platform으로 시작하면 Design First 지향 API 프레임 워크입니다

먼저 API 클라이언트에서 사용할 항목을 디자인하십시오 내 공개 JSON에 무엇을 표시해야합니까? 그리고 당신은 그것을 어리 석고 불쾌한 PHP 클래스로 모델링했습니다 ID 속성이 있고 이름 속성이있는 작성자 문서를 노출하고 싶습니다 그게 내가 여기서하고있는 일이야 일부 메타 데이터를 추가합니다

필수 필자는 "@ApiResource"주석을 넣었습니다 PHPDoc을 넣었습니다 API 만 있으면 충분합니다 읽기와 쓰기의 지원없이 데이터베이스의 지속성 지속성을 원한다면 나 자신을 구현할 두 개의 인터페이스가 있습니다

Event Driven, CQRS를 사용합니다 나는 가질 필요가 없다 동일한 모델의 내부 데이터를 유지하고 공용 데이터 모델을 유지합니다 내가 R & D 모드에 있거나 프로토 타입을 만들거나 충분히 빠르게 개발하고 싶습니다 갑자기 선택적으로 doctrine과 통합 할 수 있으며 내 공개 데이터를 내부 데이터 모델과 매핑 할 수 있습니다

그것은 같은 클래스이다 그러나 의무적 인 것은 아니며 반드시해야 할 일은 사건에 달려 있습니다 내가 그렇게한다면, 나는 기반이되는 끈기가 있습니다 바로 그것으로, 나는 사용할 수있는 많은 기능 (우리가 보게 될)을 가진 완전한 REST API를 가지고있다 저기, 하이퍼 미디어이기 때문에, 나는 관계를 추가, 그래서 내 작가는 도서에 연결되어 있습니다

나도 할 일이별로 없어 이 주석에는 "@ApiProperty"가 있으며 선택 사항입니다 필자가 원하면 Schemaorg를 사용하여 매핑을 수행 할 수 있습니다 당신이 그것을 넣지 않으면, 어쨌든 작동하지만 나는 Schema

org와의 매핑을 가지지 않을 것이다 또한 Symfony Validator 구성 요소에 검증 어설 션을 추가 할 수 있으며 유효성 검사가 자동으로 고려됩니다 기본 API의 경우 (특정 작업을 수행하려는 경우 코드가 약간 있습니다), 할 일 이상이 없다 한계에서 개발자가 할 필요가 없습니다 일단 내가 그랬 으면

저의 뼈대에이 클래스들을 만들어서 GraphQL API를 가지고 있습니다 사용 가능한 두 가지 유형의 GraphQL API가 있습니다 그리고 인트로 스펙 션 (introspection) 기능에 액세스 할 수 있으므로이 특수 유형의 __schema를 사용할 수 있습니다

고객은 API가 어떤 유형을 공개하는지 물을 수 있습니다 내가 적용 할 수있는 연산들 (질의와 돌연변이) GraphiQL에서 제공하는 작은 도구에서이 설명서에서 탐색 할 수있는 기능은 다음과 같습니다 쿼리, 돌연변이, 타입은 무엇입니까? 그리고 PHPDoc이 자동으로 추출됩니다 그리고 인간이 읽을 수있는 문서를 준비하십시오

그것은 혼자 일합니다 실제로 API 플랫폼에서 클래스는 Symfony 구성 요소 (PropertyInfo 포함)를 사용하는 특수 메커니즘으로 구문 분석됩니다 중간 표현으로 저장됩니다 그래서 API Plateform에 공개하는 모든 유형을 나타내는 메타 데이터가 있습니다 모든 문서는 이러한 문서의 모든 속성을 모든 문서 사이의 관계

읽기 전용인가요? 설명 등은 무엇입니까? GraphQL API, REST API, Swagger 문서 등 모든 것이 이러한 메타 데이터에서 생성됩니다 따라서 새로운 형식을 추가하려는 경우 이미 중간 표현이 있기 때문에 쉽습니다 우리가 어제 봤던 정규화 된 심포니를하기 위해 우리가 추가하고 싶은 형식을 지원할 것입니다 이 다이어그램 GraphQL을 사용하여 "똑똑한"고객을 만들 수 있습니다 API가 GraphQL 사양을 존중하는 한, 누가 무엇을 사용할 수 있는지 발견하고 어떤 API로도 걸어 갈 수 있습니다

비즈니스 로직, 뒤에 정의 된 비즈니스 모델, 클라이언트, 인프라, 프로젝트에서 프로젝트 recode하지 않고도 기본 작동합니다 그리고 그것은 굉장합니다! GraphQL에만 국한된 것은 아니며 REST를 사용하여 오랫동안 해왔습니다 그리고 그것은 GraphQL의 "전에"판매 된 반면, 이전에 이야기했던 히드라는 똑같은 일을 할 수 있습니다 지능형 고객이 API를 발견 할 수 있도록 API의 전체 구조를 공개합니다 Plateform API는 두 가지를 모두 지원합니다

물론 코드 작성이 쉽지 않습니다 그러나 GraphQL API는 그다지 간단하지 않습니다 여기에 JSON 문서가 있습니다 이번에는 GraphQL과 달리 쿼리가 JSON이 아니며, 모든 속성이 모든 유형의 모든 클래스를 설명합니다 GraphQL 스키마와 정확하게 같습니다

두 가지의 차이는 물론 구현의 차이점이 있지만 개념적으로는 매우 비슷합니다 그래서 고객 측에서 할 수 있습니다 그 차이점과 정확히 똑같은 GraphQL과 달리 하이퍼 미디어 API입니다 즉, 서로 다른 API가 함께 공동 작업 할 수 있다는 것입니다 GraphQL API는 오히려 사일로 (silo)입니다

Facebook API 또는 Github API를 요청합니다 내 고객이 Facebook API에서 Github API로 전환하도록하십시오 동일한 애플리케이션에서 그렇게하는 것은 아닙니다 이를 위해 Hypermedia API가 만들어졌습니다 W3C의 RDF 포맷을 포함하여 훨씬 더 진보 된 것들과 많은 양립성이있다

(나는 오늘 그것에 대해 이야기하지 않는다) 이 공개 문서 형식으로 인해 관리자 생성기가 작동하고 관리자 생성기가 이 주체의 경우 사용할 수있는 모든 엔티티와 모든 유형 및 해당 HTML 필드 설정 : 선택, 날짜 피커 필드 등 이것은 필요한 모든 정보가 사전에 설명되어 있기 때문입니다 이제 데이터를 복구하려면 REST에서 당신은 그것에 익숙해 져야합니다 : 나는 URL을 통해 나의 데이터를 얻는다 나는 내 책에서 저자에게 관계가 있으며 두 번째 HTTP 요청을 만들어야합니다 그리고 그것은 성가신 일입니다

특히 HTTP2가 아닌 경우 성능 문제로 작성자 정보를 검색 할 수 있습니다 거기에는 이름이 있습니다 이는 잘 알려진 문제입니다 내가 목록을 가지고 있다면, 내 목록의 요소 + 내 목록을 표시하기위한 요청 = 11 요청을 내 목록을 표시하도록 요청해야합니다 성능면에서 끔찍한 것은 아닙니다

이것은 언더 페칭의 문제입니다 GraphQL에서는 정말 좋습니다 나는 지금 내가 책을 원한다고 말한다 그의 제목, 저자, 그의 이름 그리고 단일 질의에서, 나는 필요한 모든 것을 얻는다 훌륭합니다

선언적입니다 우아하고, URL에서 보낸 것보다 훨씬 명확합니다 나는 단 하나의 요청만을 가지고있다 언더 페칭 및 오버 페치 문제를 해결합니다 반면에 서버 측 구문 분석기가 필요합니다

글쎄 거기에는 너무 많은 문제가되지 않는 API 플랫폼이 있습니다 패리티가 없습니다 필자가 가지고있는 JSON 문서를 가져 와서 PUT으로 보내 문서를 업데이트 할 수는 없습니다 그것은 작동하지 않습니다 사실 REST에서 나는 그의 문제에 대한 해결책을 가지고있다

나는 직렬화 그룹을 추가한다 (우리가 어제 내 conf에서 본 바와 같이) 내 신원을 확인하고 자동으로 직접 중첩 된 작성자와 자신을 찾습니다 나는 over-fetching의 문제를 해결했다 어쨌든 작은 차이는 형식을 지정하는 서버입니다 고객은 말할 수 없습니다 이번에는 저자에게 발송해야합니다

이 다른 쿼리의 경우에는 필요하지 않습니다 그래도 GraphQL보다 조금 더 나쁩니다 Sparse Fieldsets이라는 또 다른 솔루션이 있습니다 이번에는 약간의 주석을 달았습니다 "@ApiFilter (PropertyFilter :: class)"라고하며 여기에서는 어제 내 이야기에서 본 기능을 사용합니다

Symfony 시리얼 라이저의 속성 컨텍스트, 나는 단지 내 URL 매개 변수를 전달할 수 있습니다 속성은 무엇입니까? 나는 관계에 포함 시키길 바래요 같은 언어가 아니라 덜 우아합니다 URL에서 보내는 고전적인 GET 요청 GraphQL보다 훨씬 덜 우아하지만, 똑같은 일을하고 문제를 해결합니다

그리고 또 다른 장점은, 덜 우아하다는 것입니다 우리는 완전히 동의합니다 하지만 PHP에서는 Javascript로, 모든 프로그래밍 언어에서 이것은 HTTP 프로토콜에 있으며 수년간 구현되어 작동합니다 특정 파서가 필요 없습니다 필터

엔티티 검색과 같은 필터를 추가합니다 그것은 APIPlatform과 같습니다 기본을 구현하는 것입니다 당신이 Doctrine을 사용한다면 그리고 REST에서 매개 변수를 전달할 수 있습니다

내 필터링이 완료되었습니다 내 필터는 문서에 설명되어 있습니다 APIPlatform에서 제공하는 히드라 그래서 내 똑똑한 고객이 그것을 사용할 수있을거야 GraphQL에서 내가 추가 한 것과 동일한 주석을 사용하여 놀라움은 없었습니다

GraphQL에서 필터에 대한 지원을 받았고 여기에서 매개 변수로 전달했습니다 그것은 거의 같은 방식으로 작동합니다 정렬 추가 할 주석입니다 나는 모든 분야를 일일이 정리하고 싶다

그런 다음 URL에서 보내는 설정을 제목과 설명별로 정렬하고 싶습니다 호프, 올바른 순서에요 또한, 제가 적용 할 수있는 주문 필터는 Hydra에게 감사드립니다 GraphQL에서 GraphQL에는 같은 것을 지원합니다 GraphQL과 REST 간에는 여전히 많은 유사점이 있습니다 페이지 매김 더 복잡하지는 않습니다

APiPlatform을 사용하면 보안상의 이유로 기본적으로 활성화됩니다 너는 할 일이 없어 귀하의 페이지에 30 개 이상의 요소가있는 즉시, 너는 할 수있어 당신에게 페이지 번호를 줄 매개 변수를 추가했습니다 물론 페이지 당 요소 수 등을 구성 할 수 있습니다

내 문서 Hydra에서는 다시 한 번 클라이언트 측에서 내 컬렉션을 탐색 할 수있는 모든 메타 정보가 제공됩니다 미리 알 필요가 없습니다 GraphQL에서는 릴레이 스펙에 구현되어 있습니다 슬라이더 페이지 매김이기 때문에 약간 다릅니다 API 플랫폼에서도 기본적으로 지원됩니다

기본적으로 작동하며 기본적으로 사용하도록 설정되어 있습니다 쓰기 요청을하십시오 클래식 PUT 요청을 만들어 작동합니다 API Platform에서는 기본적으로 지원됩니다 GraphQL에는 약간 복잡한 것이 있습니다

우리는 같은 요청에 여러 개의 돌연변이를 보낼 수 있습니다 기본이기 때문에 자체적으로 작동합니다 clientMutationId는 요청을 보낼 때 ID를 설정해야하는 클라이언트입니다 우리는 같은 요청에 여러 개의 돌연변이를 보낼 수 있습니다 대답을 얻었을 때 서버 측에서 허용 할 것입니다

해당 요청에 대해 알기 페어링을 할 수있게 해줍니다 이것은 알아야 할 유일한 것입니다 자, 이제 우리는 지난 5 분 동안 조금 성가 시게되는 부분을 계속합니다 그래서 우리는 GraphQL을 얻었습니다

고급 REST 형식과 거의 동일한 기능을 갖추고 있습니다 GraphQL, 관심은 그것이 스스로 발견 할 수있는 API 등을 대중화했다는 것입니다 우리는 그것이 초현대적 인 것을 보았습니다, 처음부터 매우 잘 생각되었습니다 실제로 처리하기에 매우 유용한 것이지요 특히 우리가 할 때 반응 클라이언트 측면, 잘하는 모든 장비 때문에 React, 페이스 북이 GraphQL API를 사용하기 때문에 정말 빠르게 진행되고있다

이제 화가 난 파티가 이미 로그 그래서 그것은 내 REST 로그입니다

POST에서 내 요청을 실제로 볼 수 있습니다 PUT 등에서 고전적인 로그가 꽤 명확합니다 그것이 내 GraphQL 로그입니다 모든 것은 endpoint / graphql을 향해 POST됩니다 나는 세부 사항이 없다

독서, 작문인지 나는 모른다 adminSys의 경우 매우 지루합니다 나는 애플리케이션 측면에서 모든 것을 관리해야한다 이것은 첫 번째 잘못입니다 그런 다음 캐시

API Plateform (매우 빠르게 전달)에서 하이퍼 미디어 기능과 함께 작동하는 상당히 고급 캐시 메커니즘입니다 기본적으로 Varnish를 활성화 할 때 모든 쿼리 (설정 옵션이 있습니다) 그들은 PHP에 의해 한 번 생성 된 다음 몇 밀리 초 안에 항상 Varnish가 제공합니다 정말 빨라지고 있습니다 그리고 리소스에 대한 쓰기 요청을받는 즉시, 이 리소스 또는 리소스에 대한 참조가 포함 된 서버에서 생성 된 HTTP 응답을 감지하고, 컬렉션,리스트, 관계, 모든 것, 그리고 우리 모두가 제거하려고합니다 따라서 데이터는 항상 멋지지만 PHP는 최대한 적게 제공합니다

불행히도 PHP는 여전히 Varnish보다 느리고 항상 그렇습니다 문제 : GraphQL에서 모든 것이 POST입니다 갑자기 GraphQL과 함께 HTTP 캐시가 작동하지 않습니다 애플리케이션 레벨에서 캐시를 만들어야합니다 즉, REST를 사용하면 응용 프로그램 캐시를 배치 할 수 있습니다

예를 들어 doctrine cache, doctrine data cache 캐시 몇 개 넣었어요 HTTP 서버 측 클라이언트 측 HTTP 캐시 및 응용 프로그램 캐시 (localStorage 유형, sessionStorage) 클라이언트 측, 맨 위 GraphQL에서는 캐시 할 수 있지만 HTTP 프로토콜의 기능을 잃게됩니다 이는 서버 측의 서버 측 응용 프로그램 캐시 일 것입니다

그것도 우리 adminSys, 우리의 확장 성 등을 위해 빨리 성가시다 Facebook이나 Github의 엔지니어링 기능이없는 경우 그것은 또한 신속하게, perfs의 문제를 제기 할 수 있습니다 우리의 질의는 매우 동적이어서 매우 좋은 기회가 있기 때문에, 데이터베이스에 색인을 입력하지 않는다는 것입니다 이것은 REST Spars Fieldsets과 동일한 문제입니다 이것에 비밀이 없다

Neo4J의 큰 GraphQL API는 일반적으로 ElasticSearch를 사용하여이 인덱스를 설정합니다 PostgreSQL 또는 MySQL을 사용하는 경우, REST, Sparse Fieldset 또는 GraphQL과 상관없이, 당신이 무엇을 할 것인지 조심해야합니다 DDoS 공격 벡터를 생성하여 성능 또는 보안 문제를 만듭니다 보안 및 신뢰성에 관해서는, REST는 하이퍼 스퀘어 (hyper square)입니다 OWASP 스펙은 정확히 무엇을해야 할지를 말합니다

플랫폼 API에 의해 구현되는 방식입니다 우리는 API가 안전하다는 것을 증명할 수있는 많은 문서를 가지고 있습니다 우리는 API에 대해 많은 피드백을 가지고 있습니다 GraphQL을 사용하면 훨씬 더 새롭고 훨씬 덜 돌아갑니다 이미 거기에서 악용 된 몇 가지 큰 결함이있었습니다

그리고 우리는 클라이언트가 모든 유형의 쿼리를 그대로 실행하도록 할 수 있기 때문에 DDOS가 공격하는 큰 벡터입니다 보호 메커니즘이 있습니다 그것들은 webonyx / graphql-php 라이브러리, timeout의 타입, 유형은 검색어의 복잡성을 제한하지만 여전히 덜 알려져 있고 관점 보안에서 더 많은 관심을 기울일 필요가있다 신뢰성 측면에서 볼 때, 우리는 일을 잘 할 수 있습니다 우리는 항상 그렇지만, 여전히 REST보다 훨씬 성숙한 것입니다

그리고 내가 많이 사용했던 Github API조차도 (프로젝트를 수행하고이 대화를 준비하고 있기 때문에) 때로는 그렇게 복잡하지 않은 쿼리에 대해서, 내가 방금 전에 보여준 것입니다 벤 그는 충돌한다 그들의 REST API를 사용하는 동안, 그녀는 재배하고 있었지만 여전히 그 이상이었다 그래서 여전히 무언가가 있습니다 무서운 팀과 개발자는 자신이하는 일을 두려워하지 않는다는 것을 알고 있습니다

낮은 수준의 레이어를 변경하려고합니다 GraphQL의 큰 장점 : 버전 없음 우리는 유형과 필드를 평가할 수 있습니다 사실 REST에서는 똑같은 일을 할 수 있습니다 그것은 API 진화 및 티저라고

REST 및 GraphQL 용 API 플랫폼의 차기 버전에서 사용할 수 있지만 여전히 그렇습니다 클라이언트 측에서는 API 플랫폼, API 플랫폼, Hydra와 JSON-LD에 대한 모든 것입니다 반면에, 내가 말한 페이스 북 생태계 인 GraphQL의 큰 장점은, 클라이언트 쪽에서 꽤나 놀라운 것들을 할 수있게 해줍니다 아직 REST 측과 같은 레벨에 있지 않습니다 그래서 여기에서 페이스 북의 풀 스택을 사용한다면, REST 측면을 진화 시키더라도 여전히 모든 GraphQL 측면에서 나쁘지 않습니다

마침내, 어제 conf의 약간의 에코, GraphQL을 조심하십시오 Facebook에서 Facebook을 통해 수행되는 사일로 (silo)에서 완료되었습니다 이는 매우 중앙 집중적 인 웹용으로 제작되었으며, 모든 데이터가 한 공급자에 의해 제공됩니다 이것은 기본적인 Facebook 사용의 경우입니다 반대로 W3C는 REST에 대한 공개 사양이 분산 된 웹에 대해 수행된다는 사실을 매우 경계합니다

서로 다른 소스의 데이터를 모아서 기본 프로토콜로 설계 할 수 있어야한다 테크노 페이스 북과 페이스 북은 특히 작은 문제가 많이 발생했습니다 "Cambridge Analytica"와 그 모든 것 이러한 데이터 집중을 허용함으로써 개발자가하는 일은 중대한 윤리적 인 결과를 낳습니다 또한 형식과 사용 방식과도 관련이 있습니다

그래서 여기에서도 API를 할 때 눈을 감은 상태로 조치를 취하십시오 간단한 기술보다 조금 더 생각해보십시오 실제로 릴레이, 정말 잘 작동합니다 어쩌면 그 포즈 (당신이 일하는 분야에 따라), 그것은 윤리적 관점에서 조금 더 중요한 문제를 제기합니다 요약하면

GraphQL은 훌륭합니다 멋지고 멋지 네요 정말 좋았습니다 생태계는 완벽했고 기본적이고, API 플랫폼에는 그리 많지 않습니다 직접 해보는 경우 구현하기가 쉽지 않고 가장 흥미로운 기능입니다

PHP에서 PHP를 사용하지 않아도됩니다 실시간으로 진행되기 때문에 Nodejs 또는 Go로 이동하십시오 REST, 마침내 거의 같은 일을 조금 더 할 수 있습니다 늙고, 조금 덜 우아하지만 훨씬 더 성숙하고 더 많은 피드백이 있습니다 또한 GraphQL API, 자신이 관리하는 모바일 앱의 내부 프로젝트에 대해 복잡한 쿼리를 작성하는 등 마침내 꽤 비슷한 기능을 가진 성숙한 REST의 공용 API, 동일한 코드로 API 플랫폼을 사용하면 두 가지 형식 모두를 노출 할 수 있습니다 고맙습니다

JIRA REST API Tutorial – Introduction

프로그래밍 방식으로 JIRA 정보를 가져 오려면 JIRA REST API를 사용해야합니다

요컨대 REST API는 간단한 HTML 요청을 통해 JIRA와 통신하고 데이터를 가져올 수있는 인터페이스입니다 공식 튜토리얼은 조금 복잡해 보일지 모르지만 그것은 꽤 간단합니다 우리가 JRA-9 문제로 작업 중이며 의견, 예상 노력 및 작업 기록과 같은 정보를 가져와야한다고 결정했다고 가정합니다 우리는 REST API에 대한 HTML 요청을 할 것입니다 나는 당신에게 보여주기 위해 그것을 브라우저를 통해 할 것이다

"/ rest / api / latest / issue /"또는 "/ rest / api / XXX / issue /"(XXX은 시스템에서 사용중인 API 버전)의 URL 경로를 "/ browse /"에서 " json "끝에 JIRA가 우리에게 많은 데이터를 돌려주었습니다 이것들은 조밀 한 JSON 형식의 JRA-9 이슈입니다 따라서 개발중인 프로그램 / 클라이언트 / 스크립트가 무엇이든간에 JSON 형식을 설계된 데이터 구조로 구문 분석해야합니다 가독성을 위해 반환 된 데이터를 다시 포맷하겠습니다 보시다시피 이제 JRA-9에 대한 모든 것이 우리가 사용할 준비가되었습니다

JSON을 구문 분석하기 만하면됩니다 이 튜토리얼에서는 VBA를 사용하여 JIRA에서 Microsoft Excel로 데이터를 가져와야한다고 가정 해 보겠습니다 개념은 여전히 ​​동일하므로 VBA 코드에서 REST API로 HTTP 요청을 만들어 데이터를 검색해야합니다 시간을 절약하기 위해 버튼과 일부 초안 매크로가있는 통합 문서를 준비했습니다 첫 번째 줄은 WinHTTPRequest 객체를 정의하여 HTTP 요청을 만드는 데 사용합니다

그런 다음 이전에 사용한 URL과 동일한 URL로 GET 요청을 REST API에 보냅니다 요청을 보내고 Button을 클릭하면 반환 된 데이터를 Msgbox에 저장하는 코드가 더 추가됩니다 성공! 이제 우리는 JSON! 나머지 작업은 당신이 사용할 수있는 VBA-JSON과 같은 무료 라이브러리가있는 JSON을 파싱합니다 REST API 관련 부분이 여기에서 끝나는대로 VBA에서 JSON을 구문 분석하는 방법을 다른 동영상에서 보여 드리겠습니다 다음 동영상이 곧 출시 될 예정입니다

시청 해주셔서 감사합니다!!!

#2 CodeIgniter 3.x Restful API Library – REST API Debugging Tools for Developing APIs

먼저 URL에서 indexphp 텍스트를 제거하고 API 경로를 정의하십시오

프로젝트 루트 디렉토리에 htaccess 파일을 만듭니다 이 코드를 복사하여 htaccess 파일에 붙여 넣으십시오 이제 API 경로를 실행하는 indexphp 텍스트없이 url을 확인하십시오

API는 indexphp 텍스트없이 완벽하게 실행됩니다 이제 경로 설정 파일에 API 경로를 만듭니다 이렇게 API Route Working insomnia Debug APIs Software를 다운로드하십시오

설명의 링크 새 API 요청을 만듭니다

JIRA REST API Tutorial – Pulling Issue Worklog

이전 튜토리얼에서는 REST API를 통해 문제 정보를 가져 오는 방법에 대해 설명했습니다 이 비디오에서는 작업 로그를 가져 오는 방법에 초점을 맞 춥니 다

일반적으로 REST API를 통해 문제를 가져 오면 작업 로그가 반환 된 입력란에도 포함됩니다 "worklog"라는 단어를 검색해 봅시다 압축 된 JSON 형식은 눈으로 읽을 때 조금 어려우므로이를 온라인 JSON 파서에 복사합니다

이제 훨씬 나아! worklog 요소를 찾으십시오 (API 요청을했을 때 필드를 지정하지 않았으므로 많은 양의 데이터가 표시됩니다) 그곳에! 각 작업 로그에 대한 모든 정보는 여기에서 볼 수 있습니다

작업 기록은 "timeSpent"필드에 저장됩니다 형식은 사용자가 입력 한 내용 (025h 또는 25m)에 따라 분 또는 시간이 될 수 있습니다 그러나 표준 단위를 원한다면 "timeSpentSeconds"를 사용하고 수동으로 계산해야합니다 작업 로그와 관련된 주석은 "주석"필드에 있습니다 이 방법으로 작업 로그를 가져 오는 단점은 반환 된 작업 로그의 한계가 있다는 것입니다 "maxResults"필드는 제한이 20임을 나타냅니다

따라서 문제에 20 개 이상의 작업 로그가 있으면 문제가 해결됩니다 문제마다 모든 작업 로그를 제대로 가져 오려면 다른 방법을 사용해야합니다 이전과 같은 요청 URL을 사용하지만 "json"접미어를 "/ worklog"로 변경하십시오 이제이를 JSON 파서에 복사 해 봅시다 (우리가 관심이없는 분야를 최소화하자) 이번에는 API가 작업 로그 만 반환하고 다른 모든 입력란은 삭제되었지만 형식은 동일합니다

결과에 제한이 없습니다 "maxResults"는 항상 "총"작업 로그 수와 같습니다 그러나 템포 시트 시트 플러그인을 설치 한 경우 그들은 더 많은 사전 작업 로그 쿼리를 할 수 있도록 자신의 출퇴근 시간 기록 용지 API를 제공했습니다 Tempo 작업 표 APi는 특정 사용자 및 날짜 범위에 대해 작업 로그를 쿼리 할 수 ​​있다는 점을 제외하면 JIRA REST API와 매우 유사합니다 이 매개 변수를 요청 URL 끝에 추가하면 완료됩니다

안타깝게도, Tempo API를 가지고 있지 않다면 각 사용자에 대해 작업 로그 보고서를 가져 오는 방법에 대한 대체 방법을 찾아야 할 것입니다 나는 곧 다음 비디오에서 당신을 보여줄거야 시청 해주셔서 감사합니다! 구독 튜토리얼 더 🙂

#6 CodeIgniter 3.x Restful #API Library – REST API with Token Authorization

:: API 인증 :: API 구성 배열`requireAuthorization`에 하나 이상의 매개 변수를 추가하십시오 이제 인증 API를 작성하십시오

새 경로 만들기 디버그 API 경로 Show Error :: Token이 정의되어 있지 않습니다 승인이 API에서 제거되면`requiresAuthorization` 매개 변수를 제거하십시오 헤더에 토큰을 전달하려는 경우 jwt 구성 파일로 이동하여 헤더의 이름을 변경할 수도 있습니다 토큰 생성 이 코드를 복사하여 API 함수에 붙여 넣으십시오

이처럼 인증 토큰을 생성했습니다 jwt 구성 파일에서 헤더의 이름과 만료 시간을 변경할 수 있습니다 토큰 데이터에 액세스하는 방법

Build and deploy a REST API on IBM BlueMix with PHP and MySQL

[음악] VASWANI : 안녕하세요 내 이름은 Vikram Vaswani이며이 동영상에서는 REST API에 대한 간단한 데모를 제공 할 예정입니다

내가 PHP와 MySQL로 만든 다음 BlueMix에 배포했습니다 이 API는 MySQL 데이터베이스에서 제품 데이터를 추가, 편집 및 삭제할 수있는 인터페이스를 제공합니다 지금 BlueMix의 데모 앱으로 사용할 수 있으므로 따라 할 수 있습니다 이 비디오를 보거나 나중에 탐색 해보십시오 데모 앱에는 브라우저 기반 API 탐색기 인 Swagger의 인스턴스도 포함되어 있습니다

다른 REST API 메소드를 실행하고 결과를 즉시 볼 수 있습니다 바로 지금 당신 앞에서 볼 수 있습니다 get 메소드 인 가장 간단한 HTTP 메소드로 시작하겠습니다 대부분의 REST API와 마찬가지로 get 메소드를 사용하여 콜렉션을 검색 할 수있다 리소스 또는 개별 리소스 제품의 끝점에 요청을 보내서 시작하겠습니다

제품 리소스 모음을 얻을 수 있습니다 보시다시피, API가 컬렉션으로 응답했습니다 개별 제품을 대표하는 JSON 문서 이 간단한 예에서 각 제품에는 제목과 가격 만 있습니다 물론이 기능을 훨씬 더 복잡하게 만들 수 있습니다 단일 제품을 원한다면 간단하게 요청을 보낼 수 있습니다 리소스의 고유 URL 끝점, 이전 URL과 본질적으로 동일 제품 ID가 끝에 추가되었습니다

ID 1 인 제품을 원한다고 가정 해 봅시다 그래서 우리가해야 할 일은 ID를 입력하는 것뿐입니다 Swagger 인터페이스에 넣고 "시험해보기"버튼을 클릭하십시오 다시 볼 수 있듯이 API가 응답했습니다 이번에는 개별 제품에 대한 JSON 문서를 참조하십시오

데이터베이스에 새 제품을 만들려면 일반적으로 게시 요청을 생성해야합니다 API에 추가하고 게시물 본문에 새 제품의 세부 정보를 포함시킵니다 그래서, 방금 6 인치 정원 놈들의 선적을 받았다고 가정 해 봅시다 데이터베이스에 입력해야합니다 그래서, 여기에 내가 입력하려고하는 게시판이 있습니다

보시다시피 제품의 이름과 가격이 포함되어 있습니다 게시물 요청을 클릭하여 제출하면 API가 응답했음을 알 수 있습니다 새 제품을 나타내는 JSON 문서가 있고 고유 한 ID가 할당되어 있습니다 새 제품 레코드에 -이 경우 ID 5입니다 201의 응답 코드도 알 수 있습니다

기본적으로 서버는 말하기를 좋아합니다 실제로 기존 제품을 업데이트하려면 어떻게해야합니까? 이 작업을 수행하는 RESTful 방법은 리소스 URL에 put 요청을 보내는 것입니다 요청 본문에 새 데이터를 포함합니다 그럼, 내 정원 놈들이 엄청나게 인기 있다고 가정합시다 가격을 약 5 달러 인상하려고합니다

제품 레코드를 업데이트하려면 자원의 고유 URL에 대한 put 요청을 생성해야합니다 본문에 업데이트가 포함됩니다 신제품의 고유 ID는 5 였고, 가격을 5 달러로 갱신하고 요청을 제출할 것입니다 그리고 API가 200 개의 응답 코드로 응답했음을 알 수 있습니다 이는 괜찮습니다

3999의 새로운 가격으로 신제품 기록 사본을 나에게 보냈습니다 모든 놈들이 팔리면이 제품을 시스템에서 제거해야합니다 매우 간단합니다 리소스의 고유 URL에 삭제 요청을 보내야합니다

신분증을 다시 기억해 5 그것을 제출하십시오 그리고 당신은 204의 응답 코드를 볼 수 있습니다 자원이 데이터베이스에서 제거되었음을 나타냅니다

많은 REST API의 흥미로운 점은 여러 입력 및 출력 형식을 지원한다는 것입니다 지금까지 보았던 모든 것들이 JSON에 있었지만이 기사에서 설명한 것처럼, REST API에도 XML 지원을 추가하는 것은 매우 쉽습니다 이것이 어떻게 작동하는지 보려면 처음으로 돌아가서 이번에 시도해 보겠습니다 XML 형식의 제품 목록을 얻을 수 있습니다 그것은 아주 간단합니다

Swagger에서 할 수있는 요청의 헤더 만 제외하면됩니다 응답 내용 유형을 응용 프로그램 XML로 지정하고 요청을 제출하십시오 그리고 너 거기 간다 이전과 같은 데이터가 표시되지만 이번에는 XML 문서로 반환됩니다 물론 XML 문서를 보내어 새로운 제품 레코드를 만들 수도 있습니다 JSON 문서 대신 게시물 요청과 함께 이 경우 매개 변수 내용 유형을 설정하기 만하면됩니다

응용 프로그램 XML로 게시 본문에 대한 이 짧은 데모에서는 그게 전부입니다 기사를 읽고 API로 직접 놀면 곧 프로처럼 REST API를 코딩하게 될 것입니다 재미있게 보내십시오 [음악]

How Do I… Send SMS Text Messages via REST API? (SMS API)

응용 프로그램 또는 연결된 장치에서 SMS 문자 메시지를 보내는 것이 쉽습니다 Telecoms Cloud API를 사용합니다

/ sms / 아웃 바운드 끝점을 사용하고 먼저 대상 번호 다음에 "보낸 사람"번호와 최대 160 자의 텍스트를 입력합니다 그만큼 "from"번호는 Telecoms Cloud 계정의 서비스 번호이거나 하나도 가지고 있지 않으면, 당신은 당신이 찾을 수있는 "from"숫자를 지정할 수 있습니다 계정 설정 문자 메시지를 보내면 아웃 바운드에서 반환 된 sms_id를 사용하여 배달 상태를 확인할 수 있습니다 끝점, 메시지를 보낼 때 모든 메인에 직접 연결 영국의 네트워크 사업자 및 전 세계 800여 모바일 네트워크와의 호환성 문자 메시지는 (60) 초 내에 배달됩니다 – 일반적으로 더 빠릅니다!