JIRA REST API Tutorial – Create Issue

이봐, 모두 무슨 일이야! 레드 스테이플러에 오신 것을 환영합니다 다시

이번 주 비디오 비디오는 우리가 말할 것입니다 JIRA에서 이슈를 만드는 방법 API로 문제를 만들려면 님에게 POST 요청을하면됩니다 REST 엔드 포인트 URL을 지정하고 JSON 형식의 문제 정보 요청이 성공하면 응답을받습니다 문제 ID, 문제 키 및 링크를 클릭하십시오 나는 Chrome 확장 프로그램 (Postman)을 테스트합니다

JIRA API 먼저 링크를 API에 복사합니다 요청의 경우 헤더를 설정해야합니다 application / json에 대한 content-type 헤더 권한 부여를 위해 기본 인증 (인증) 사실은 다음과 같은 다른 인증 방법을 사용할 수 있습니다

쿠키 인증,하지만이 튜토리얼은 Basic과 함께 할 것입니다 기본 인증은 단순히 base64 형식의 사용자 이름과 비밀번호 HTTP 헤더에 추가하십시오 이제 몸에, 문제 정보 만 지정하면됩니다 요약 키, 요약, 설명, 이슈 유형 웹에서 만든 것과 동일합니다 기술 프로젝트를 만들고 싶다면 이슈 키는 TP입니다

문제 유형은 태스크 하지만 다른 사람을 만들고 싶다면 너도 그렇게 할 수있어 이제 모든 것이 준비되면 나에게 갈거야 요청을 제출하십시오 이제 당신은 그것을 볼 수 있습니다

POST 요청이 성공했고 발행 키 TP-5와 문제에 대한 링크가있어서 대시 보드를 새로 고침합니다 당신은 그것을 볼 것입니다 새로 만든 티켓이 여기에 있습니다 이제 당신은 무엇을해야할지 질문 할 수 있습니다 웹을 만들려면해야합니까? 애플리케이션을 생성하고 JIRA API를 사용하여 이슈? 나는 아주 창조하기위한 조치를 취했다

간단한 PHP는 문제를 만들 수 있습니다 원하는 문제 정보를 제출할 수 있습니다 양식으로 만든다 이제 간단한 폼과 버튼, 그리고 자바 스크립트를 사용할 수있게되었습니다 버튼을 클릭하면 양식을 제출하십시오 모든 정보는 jirapi

php jiraapiphp에서 우선 인코딩 할 것입니다 base64로 사용자 이름과 암호 형식을 지정하고 다음으로 컬을 시작하십시오 REST API URL 나는 returntransfer를 true로 설정하면 JIRA의 답변 우리는 포스트를 설정했다

true를 요구하고 HTTP를 설정합니다 content-type application / json이있는 헤더 기본 인증 및 JSON을 빌드하는이 다른 단계 요청한 다음 실제 요청을하십시오 컬을 실행하고 결과를 반환하십시오 이 예제 코드는 비디오에서 찾을 수 있습니다 설명 상자

그게 다야! 궁금한 점이 있으면 언제든지 알려주세요 피드백 보고 주셔서 감사합니다 구독 잊어 🙂 안녕

[#48] Einführung in RESTful APIs: Authentifizierung mit JWT

안녕하세요 새로운 비디오

마지막 동영상에는 우리는 RESTful 로그인 API를 만들었습니다 언제 우리는이 API와 올바른 로그인 데이터를 입력했습니다 우리는 토큰을 되찾았다 시간은 단지 자리 표시 자일뿐입니다 이 클라이언트는 각각의 추가 토큰에서 토큰을해야합니다

서버에 질의 보내기, 예 : 사용자 데이터를 본 경우 해야한다 이 비디오에서 우리는 소위 JWT – JSON 웹 토큰 나는 이미 모든 것을 준비했다 여기에서 결과를 볼 수 있습니다 이것으로 getData 토큰의 예제가 있습니다

기능이 확보되었습니다 그녀는 나중에해야한다 중요한 데이터를 반환하십시오 내가 그녀를 가졌다면 토큰 호출없이 여기 도착하십시오 나는 응답으로 : "토큰 누락"

내가 그렇다면 하지만 Chrome 플러그인에 대해 REST 클라이언트 호출 및 여기에 적절한 토큰을 준다 나는 다음과 같은 결과를 가지고있다 이 API는 단순함을 위해서가 아니라 다음과 같이 "getData"로 계속하십시오 각 수동 사용자 ID 어쨌든, 이제 나는 나와 함께 있기 때문에 데이터에 액세스하십시오

토큰에 인증되었습니다 원칙 다음과 같습니다 : 사용자 로그 a, JSON 웹 토큰을 받고 이것은 각각의 터미널에있다 예 : 지역에 캐시 됨 메모리 또는 쿠키 앱이 그런 다음 터미널은 토큰을 보냅니다 요구하는 모든 요청

JSON 웹 토큰은 보낸 승인 헤더 에서 가장 좋은 사람은 무기명을 사용해야한다 체계를 사용하십시오 간단히 말해서, 그것은 그것에 책임이있는 각 클라이언트 JWT를 지역에 저장하는 것입니다 모든 요청과 함께 보내야한다

그는 필요합니다 베어러 스킴 외에도 다른 방법으로 예 : "Basic"및 "Digest" 이 둘 다 인증을 원한다 이름과 비밀 키 Bearer-Schema는이를위한 토큰을 기대합니다

모든 것은 항상 HTTPS를 초과해야합니다 실행합니다 여기에 내가 가진 예가있다 면제 자세한 정보 : 종종 한 사람은 JWT 용어 OAuth 또는 OAuth2

이것은 공개 된 것입니다 다른 로그 인증 및 인증에 대해 설명합니다 그렇게 정확하게 작품은 몇 가지에있다 설명 요청 (RFC) 따라서 개념은 토큰을 작성했지만 설명하지는 않습니다

구체적으로 토큰이 정확히 어떻게 보이는지 필요가있다 토큰은 하나 이상입니다 고유 한 사용자의 문자열 식별하기 좋아,있어 이 JWT를 만들었습니까? 토큰에 나는 Firebase를 사용한다

확장 나는 주로 이 웹 링크의 샘플 코드를 곱하십시오 구현 나는 비디오에 넣을거야 설명입니다

확장 프로그램은 먼저 예 : 작곡가를 통해 그래서 우리가 이미 알고있는 cd 해당 프로젝트에 명령 디렉토리를 변경 한 다음 "작곡가 firebase / php-jwt가 필요합니다 " 우리가 이미있는 곳에 우리는 할 수있다 다른 확장자를 추가하십시오 토큰을 생성하려면 목적의 알고리즘의 스펙 암호화

또한, 비밀 키 지정하기 세대를 필요로합니다 여기있다 정의에 의해 규율됩니다 나는 원한다 데이터에있는 것이 아니라 소스 텍스트를 하나에 쓴다

욥은 그런 제 3자를 넣지 마라 손이 닿기 쉬운 곳 여기에 "dotenv"확장이 도움이됩니다 Composer를 통해이 작업을 수행 할 수도 있습니다 함께 설치해야한다 " vlucas / phpdotenv "당신이 만든

env 파일의 경우 상수가 포함됩니다 사용하고 싶다 여기에 내가 가진 예가있다 가장 높은 프로젝트 수준에서 그렇게합니다 했다

정확히 어디에 의존하는지 각각의 프로젝트 그래서 나는 dotenv 사전에 dotenv를 사용해야합니다 초대 라이브러리 나는 이것을 색인에 직접 가지고있다 그것과 마찬가지로 웹 사이트가 설명됩니다 의 링크 물론, 확장 기능을 찾을 수도 있습니다

동영상 설명에 멀리까지 좋은 설치 프로그램을 실행합니다 여기 로그인 경로에는 28 ~ 47 행이 추가되었습니다 짧은 여기 그냥 배열이라고 말했다 조립 된 JWT 등록 필요 합니다 이것은 예를 들어 타임 스탬프입니다

토큰이 만들어졌습니다 어느 ID에서 그가 얼마나 오래 그가 누구에게 발급 되었는가? 이었다 jwt :: encode 함수는 그때 모든 일 여기 나는 움켜 잡는다 그때 나에게 변수에

env 파일에 정의되어 있습니다 이것은 getenv ()에 관한 것입니다 이 배열 나는 여기에 매달린다 결과 변수 그것으로 중요하다

전체 작품 : 나는 여기에 사용 명령으로 올라 가야 해 Firebase 라이브러리를 통합하십시오 내가 로그인하면 좋다 나는 뒤에 오는 것을 여기에서 얻는다 : 꽤 긴 문자열 – JWT 토큰 그건 그렇고, 여기 아름다운 것들을 볼 수 있습니다

Tripartition : 각 지점에서 분리 첫 번째 부분은 헤더입니다 예를 들어, 어떤 알고리즘 사용되었다 그런 다음 페이로드가옵니다 – 그래서 Nutzdatenteil 그것은 우리의 완전한 배열이 될 것입니다

결국 서명을 따른다 그 의지로 env 파일의 비밀 키 필요했습니다 모든 것이 그녀처럼되었다 아마 당신은 이미 base64- 인코딩

이렇게하면 파일을 쉽게 만들 수 있습니다 교환 및 저장 여기 뭔가가 아니야 암호화합니다 이 토큰이 좋다

getData에 전달됩니다 나는 그들을 여기에 정의했다 내가 getData와 각각의 사용자 ID는 여기에 있습니다 새로운 것 그러나이 철자법은 다음과 같습니다 추가 ($ 인증합니다)

나는 이것을 모든 경로에 첨부한다 당신은 자신을 인증해야합니다 할 것이다 나는 저에게서 그 추가를 가져갈 수 있었다 항상 데이터를 볼 수 있습니다 나는 그것을 다시 취소 할 것이다

좋습니다 미들웨어의 개념입니다 레이어 모델을 기반으로합니다 미들웨어는 요청에 도움이됩니다 백그라운드에서 응답 객체도 우리가 원하는대로 변경하십시오

$ authenticate 변수 뒤에 그래서 함수 이상의 아무것도 아닙니다 원칙적으로, 나는 단지 여기에서 확인한다 토큰이 권한 부여 헤더에 설정되었는지 여부 이다 나는 hasHeader () 함수를 사용하여이를 수행 할 수있다 SLIM을 만드십시오

그렇지 않은 경우에는 항상 깨끗한 상태로 회신 할 수 있습니다 401은 예 : "Unauthorized" 위키피디아에서 볼 수 있듯이 토큰이있는 경우 이번에는 jwt :: decode가 적용됩니다 토큰이 유효한지 확인하십시오 해독 된 토큰 결과 배열을 변수로 반환합니다

여기에 문자열이 있습니다 "무기명"은 아무것도 가지고 있지 않기 때문에 잘랐다 토큰과 관련이 있습니다 이것이 여기에있는이 것입니다 때문에 방금 substr () 메서드가 있습니다

PHP와 처음 7 명이 사용했습니다 서명이 끊어졌습니다 이 next () 메소드를 보았습니다 그런 다음 여기에있는 미들웨어에서 내 길 데이터 흐름 외부에서 내부로 이어집니다

그것은 먼저 인증 함수 실행 된 후 getData 만 국지 인증 제공 성공했습니다 그게 내가 할 수있는 방법이야 다시 시험하십시오 맞은 사람과 토큰이 작동합니다 그러나 단 하나 문자 변경,이 문자는 삭제하겠습니다

Q, "잘못된 토큰"이 나옵니다 그다지 멀리까지 지금은 이제 모든 API를 사용할 수 있습니다 인증 미들웨어를 통해 무단 사용을 방지하는 기능 보안 현재 아무도 없다

토큰이 있는지 검사하는 함수 어쩌면 이미 만료되었을 수도 있습니다 있다 새로운 기능도없는 기능 토큰을 발행 할 수 있습니다 너는 ~해야 해 다시 로그인하십시오 전체 주제가 매우 복잡합니다

나는 좀 더 넣었다 동영상의 추가 링크 설명입니다 다음에 봐요!

PHP Tutorials – Twitter API Send & Delete Tweet

안녕 친구 이제 요청에 따라 이전 동영상에서 이동할 수 있습니다 트위터 apide 짹짹 내가 전화 했어 친구들을 트윗하는 법을 말해 줄 수 있어요? 그들은 또한

나는 그녀에게 짧은 비디오를 바로 촬영했다 우선 저는 아브라함의 도서관을 같은 방식으로 사용하고 있습니다 내가 준 링크에서 소스 코드를 다운로드했다 다운로드 한 라이브러리의 모든 파일을 복사합니다

그런 다음 indexphp를 엽니 다 우리는 설치 방법을 조사하고 있습니다 https : //twitteroauthcom을 입력합니다

수동 설치를 클릭합니다 그런 다음 선택한 영역을 복사합니다 Autoload 파일이 모국어이기 때문에 '공급 업체'부품을 삭제합니다 기본적으로 라이브러리 파일에서 경로 'src'로 지정된 폴더의 이름을 변경하려면 코드에서 변경해야합니다 Twitter와의 연결을 정의합니다

이제 우리는 트위터 응용 프로그램이 제공하는 키를 입력하고 있습니다 우리는 코드를 순차적으로 입력합니다 appstwittercom

이전 동영상에서는 앱을 만들지 않았습니다 나는 새로운 친구들을 위해 그것을 다시 보여준다 우리는 appstwittercom에 입장하고 있습니다

우리는 Create New App이라고 부릅니다 우리는 원하는대로 응용 프로그램을 작성합니다 웹 사이트 주소는 필수이며, 당신은 자신의 웹 사이트를 작성할 수 있습니다 콜백 URL은 애플리케이션이 허용 된 후에 앱이 리디렉션하는 URL입니다 내러티브에서는 필요하지 않습니다

설명이 짧아야합니다 내 액세스 토큰 만들기를 클릭합니다 그런 다음 키를 가져 와서 코드에 각각 추가합니다 우리는 Twitter에 연결되어 있습니다 트위터가 우리에게 준 문서 tweeting, delete, follow, dm throw 등과 같은 여기에서 모든 작업을 볼 수 있습니다

우리는 tweeting을보고 있습니다 샘플 코드를 검사 할 수 있습니다 아브라함 사이트의 샘플 코드를 살펴 보겠습니다 우리는 두 가지 방법으로 트위터와 통신합니다 GET 또는 POST는 tweeting에 POST를 사용합니다

우리는 get을 post로 바꿉니다 상태 / 업데이트 '상태'=> '우리가 보내고 싶은 트윗' 그동안 Besiktas는 모든 Besiktas에게 축하를 보냈습니다 우리는 재판을하고 있습니다 타임 라인에 빠진 지 확인하십시오 예, 트위터에 있습니다

왼쪽에있는 모든 매개 변수를 사용할 수 있습니다 매개 변수의 시작 부분에 POST 또는 GET이 있으면 코드를 적절하게 설정합니다 트윗을 삭제하려고 노력합시다 상태는 / 파괴 우리는 트위터의 ID를 얻어야합니다 트윗을 두 번 클릭하면 ID가 링크에 나타납니다

나는 코드에서 업데이트 위치에 파괴를 쓰고있다 나는 상태가 'id'로 쓰여지는 곳을 바꾼다 그럼 나는 그에게 짹짹 ID를 쓴다 우리는 노력하고 있습니다 짹짹 삭제 🙂 비디오에서 지정할 내용을 지정할 수 있습니다

감사합니다

Building Angular 4 application with REST-API backend

안녕하십니까 CUBA REST API 전용 웹 세미나에 오신 것을 환영합니다

내 이름은 Gleb Gorelov이며 CUBA Platform 개발 팀을 대표합니다 이 웹 세미나에서는 REST API에 대해 자세히 살펴보고 어떻게 작동하는지 살펴 보겠습니다 우리는 공개 웹 사이트에 REST API를 사용하여 클라이언트 측 응용 프로그램을 만들려고합니다 세션에서는 인증, 엔티티에 대한 CRUD 작업, 미리 정의 된 JPQL 쿼리의 실행, 서비스 방법 실행, 파일 업로드 및 다운로드 Big Cubina Burger라는 작은 버거 상점을위한 쿠바 앱이 있다는 이미지 우리 애플리케이션의 데이터 모델을 살펴 보겠습니다

모델의 기본 엔티티는 Order, OrderItem 및 MenuItem입니다 Order 엔터티는 OrderStatus 열거 형에 의해 표시되는 상태를 가지며, 주문을 한 사용자와 주문 항목 목록을 참조하십시오 OrderItem 엔티티는 순서화 된 MenuItem의 수량을 포함합니다 MenuItem 엔티티에는 이미지, 이름, 무게 및 가격 필드가 있습니다 응용 프로그램으로 전환합시다

간단한 응용 프로그램으로 메뉴 항목 및 주문 화면 만 있습니다 따라서 이미지, 이름, 무게, 가격 및 주문이있는 메뉴 항목을 볼 수 있습니다 보시다시피, 애플리케이션은 정보를 저장합니다 햄버거와 주문에 관한 정보를 제공하며 백엔드 응용 프로그램에 그 목적이 있습니다 따라서 공개 웹 사이트 용 REST API를 사용하여 클라이언트 측 응용 프로그램을 만들 계획입니다

범용 REST API는 다음과 같은 기능을 제공합니다 엔티티에 대한 CRUD 작업 사전 정의 된 JPQL 쿼리 실행 서비스 방법의 실행 엔티티, 뷰, 열거 형, 데이터 유형과 같은 메타 데이터 가져 오기 현재 사용자 권한 얻기

예를 들어 엔티티, 속성, 특정 권한에 대한 액세스 이름, 언어, 시간대와 같은 현재 사용자 정보를 얻습니다 업로드 및 파일 다운로드 REST API는 인증에 OAuth2 프로토콜을 사용하고 익명 액세스를 지원합니다 API에 대한 자세한 문서는 Swagger 사양에 따라 작성되었으며 http://files

cuba-platformcom/swagger 프런트 엔드 기술로서 Angular, Angular 4를 사용하겠습니다 Angular는 HTML로 클라이언트 응용 프로그램을 작성하기위한 프레임 워크이며 JavaScript 또는 JavaScript로 컴파일되는 TypeScript와 같은 언어입니다 프레임 워크는 몇 개의 라이브러리로 구성되며, 일부는 코어이며 일부는 선택적 라이브러리입니다 Developing Angular 응용 프로그램은 HTML 템플릿과 Angularized 마크 업, 해당 템플릿을 관리하기위한 구성 요소 클래스 작성, 애플리케이션 로직을 서비스에 추가하고, 복싱 컴포넌트와 서비스를 모듈에 추가합니다

그런 다음 루트 모듈을 부트 스트랩하여 응용 프로그램을 시작합니다 응용 프로그램 내용을 브라우저에 표시하는 각도 처리 사용자가 제공 한 지침에 따라 사용자 상호 작용에 응답합니다 이제 애플리케이션 개발로 넘어 갑시다 그리고 Angular 응용 프로그램을 엽니 다 상단에 탐색 모음이있는 응용 프로그램 스텁을 이미 준비했습니다

로그인 화면, MenuItems의 목록을 보여줄 홈 스크린이 있습니다 이제 IDE에서 Angular 프로젝트를 엽니 다 _services 디렉토리를 확장합니다 응용 프로그램 코드를 살펴보면 몇 가지 서비스에 대한 스텁이 있음을 알 수 있습니다 예 : AuthenticationService

AuthenticationService는 로그인 및 로그 아웃 목적으로 사용됩니다 UserService 현재 사용자 정보를 저장 및로드하고 사용자가 변경된 경우 다른 구성 요소에 알립니다 StorageService 이것은 헬퍼 서비스 일 뿐이며, 우리의 경우에는 저장소를 사용하여 작업을 일반화하는 데 사용됩니다 이러한 서비스 외에도 AlertService 및 AlertComponent 오류 또는 성공과 같은 현재 페이지에서 메시지를 표시하는 목적을 수행합니다

메뉴 항목 브라우저로 진행하기 전에 MenuItem 엔터티에 대한 모델 클래스를 만들어야합니다 이제 새로운 디렉토리를 만들어 보겠습니다 이름 : _ 모델 새로운 수업을 만듭니다 Name : MenuItem을 사용합니다 그리고 그 내용을 다음으로 대체하십시오

메뉴 클래스에는 ID, 이름, 가중치, 가격 및 이미지가 있습니다 그리고 이미지 필드가 CUBA 응용 프로그램의 FileDescriptor 엔티티, 우리는 동일한 작업을 수행하고 FileDescriptor 클래스를 생성합니다 이제 하나 더 클래스를 만들어 봅시다 이름 : FileDescriptor 그리고 그 내용을 다음으로 대체하십시오

따라서 FileDescriptor 클래스에는 id, name, extension, size 및 createDate 필드가 있습니다 이제 메뉴 항목으로 돌아가서 FileDescriptor 클래스를 가져와야합니다 이제 MenuItemsBrowseComponent를 열어 보겠습니다 그리고 menuItems 필드를 추가합니다 표시 할 메뉴 항목을 저장하십시오

이처럼 import MenuItem 이미지 URL 생성을위한 스텁 메서드를 추가합니다 이제이 구성 요소의 HTML 템플리트로 이동하십시오 그리고 다음을 놓자 첫 번째 반복에서는 간단한 표를 보여줍니다

그리고 우리는 특별한 Angular 특성, 지시문 (예 : ngFor) 우리의 menuItems를 반복하고 표 셀로 제시하기 그리고 스타일을 추가합시다 응용 프로그램으로 이동하십시오 결과적으로 우리는 빈 테이블을 가지므로, REST API를 사용하여 CUBA 애플리케이션에서 메뉴 항목을 얻기위한 서비스를 생성 해 보겠습니다 IDE로 이동합니다

_services 디렉토리에서 새 서비스를 작성하십시오 이름 : MenuItems입니다 좋아, 나는 시험이 필요 없어 그리고 다음을 추가합시다 엔티티 이름과 엔티티 뷰에 대한 constance를 추가했습니다 이 값은 REST API에 대한 요청에 사용됩니다 또한 AlertService를 주입하고 오류 처리 방법을 추가했습니다 또한 메뉴 항목을로드하고 이미지 URL을 가져 오는 메소드 스텁을 추가했습니다

이제 loadMenuItems 메서드를 구현해야합니다 요청을 작성하고 응답을 수동으로 파싱 할 수 있습니다 또는 cuba-rest-js 라이브러리를 사용하십시오 cuba-rest-js는 web 및 Nodejs 용 자바 스크립트 라이브러리입니다

CUBA Platform의 REST API 사용을 용이하게합니다 CUBA REST API 작업에 필요한 모든 메소드를 제공합니다 예를 들어, 로그인 / 로그 아웃 인증 토큰을 얻거나 취소하는 데 사용됩니다 getUserInfo는 현재 사용자 정보를 가져옵니다 loadEntities / loadEntity는 엔티티 또는 단일 엔티티 목록을로드하는 데 사용됩니다

commitEntity / deleteEntity는 엔터티를 생성, 업데이트 또는 삭제하는 데 사용됩니다 invokeService는 서비스의 메소드를 실행하는 데 사용됩니다 그리고 많은 다른 사람들 UserInfo와 같은 여러 모델 클래스와 함께 GitHub에서 cuba-rest-js를 찾을 수있을뿐만 아니라 자세한 정보도 읽을 수 있습니다 내가 열어 보자 GitHub에서 쿠바 – 플랫폼 / 쿠바 Rest JS 여기서 설치, 샘플 사용 등에 대한 정보를 찾을 수 있습니다 이 설명서를 읽으십시오 우리의 응용 프로그램에서는 cuba-rest-js를 사용할 것입니다

프로젝트에 의존성으로 추가합시다 IDE로 이동합니다 터미널 창을 엽니 다 신청서를 그만하자 그리고 cuba-rest-js를 설치하십시오

자, 이제 packagejson을 열면, 우리는 cuba-rest-js가 우리 프로젝트에 종속되어 있음을 알 수 있습니다 메뉴 항목로드를 진행하기 전에 cuba-rest-js의 사용을 용이하게하는 cuba 통합 서비스 services 디렉토리 내에서 새로운 서비스를 만듭니다 CubaIntegration이라는 이름으로 확인을 클릭하십시오

다음을 추가합시다 이 서비스는 CUBA 앱 인스턴스를 생성하고 URL을 반환합니다 FileDescriptor 엔티티로 표현 된 파일을 얻습니다 여기 getFilesAbsoluteURL이 있습니다 이제 새로운 CUBA 앱을 초기화하는 것을 볼 수 있습니다

이 저장 속성을 주목하십시오 애플리케이션 이름과 apiUrl을 정의하는 것과 함께, StorageService에서 값을 가져 와서 저장소 속성을 정의합니다 이제 새로 만든 MenuItem을 제공해야합니다 및 모든 구성 요소에 대한 CubaIntegration 서비스를 제공합니다 그럼, 열자

appmodulets 및 providers 속성 내 CubaIntegrationService와 MenuItemsService를 추가합시다 MenuItemsService로 돌아가겠습니다 우선, cubaApp 필드를 추가합시다

cubaIntegrationService를 삽입하십시오 생성자 내에서 cubaApp 인스턴스를 가져옵니다 그리고 메소드 구현을 추가하십시오 loadMenuItems () 및 getImageUrl () 따라서 loadMenuItems () 메서드에서 loadEntities () 메서드를 사용합니다

cuba-rest-js에 정의되어 있습니다 매개 변수로 ENTITY_NAME 및 ENTITY_VIEW를 전달합니다 좋아, Swagger를 열어 라 파일 섹션으로 이동하십시오 Swagger 문서에 따르면 FileDescriptor 엔터티가 나타내는 파일 / files / {id} 경로에서 얻을 수 있습니다

getImageUrl 메소드는 쿠바 앱에서 파일을 가져올 URL을 반환합니다 또는 자리 표시 자 URL 만 getFilesAbsoluteUrl (), 열기 이전에 보았던 것처럼 getFilesAbsoluteUrl 메소드는 기본 apiUrl과 FILES_PATH를 사용합니다 파일과 같습니다 그리고 나서 파일 ID를 추가합니다 MenuItemsBrowseComponent를 열어 보겠습니다

그리고 그 내용을 다음으로 대체하십시오 loadMenuItems 메서드를 추가했습니다 menuItemsService에서 loadMenuItems를 호출하고 성공하면 값을 얻습니다 그리고 그것을 사용할 수 있도록 menuItemsService를 삽입했습니다 getImageUrl의 경우 menuItemsService에서 getImageUrl 메소드도 호출합니다

신청서를 시작하겠습니다 메뉴 항목 목록 대신 승인되지 않은 오류가 표시됩니다 보호 된 리소스에 액세스하기 전에 사용자는 인증 토큰을 얻어야합니다 하지만 권한이없는 사용자의 메뉴 항목 목록을 표시하려고합니다 승인 된 옵션에 대한 추가 옵션을 제공합니다

물론, 우리에게는 그러한 기회가 있습니다 보호 자원에 대한 요청에 인증 헤더가 없으면, 사용자는 익명 세션으로 인증됩니다 기본적으로 익명 액세스는 금지되어 있습니다 사용하려면 설정해야합니다 cuba

restanonymousEnabled 응용 프로그램 속성이 true로 설정됩니다 Studio로 이동하여 IDE 버튼을 클릭하십시오 IDE에서 CUBA 응용 프로그램을 엽니 다 web-app

properties를 엽니 다 cubarestanonymousEnabled를 true로 설정하십시오 그런 다음 Studio로 돌아갑니다

페이지를 새로 고쳐 봅시다 이제 메뉴 항목 목록을 볼 수 있습니다 로그인 기능을 사용 해보자 이전에 말씀 드렸듯이 승인 된 사용자는 메뉴 항목 편집 및 생성, 주문, 개요 개인 주문 및 주문 취소 따라서 로그인 / 로그 아웃 기능을 구현해야합니다

IDE로 돌아가 Angular 애플리케이션으로 돌아가겠습니다 우리는 이미 인증 및 사용자 서비스에 대한 스텁을 가지고 있으므로이를 구현해 보겠습니다 AuthenticationService를 열고 그 내용을 다음과 같이 바꾸자 우리는 MenuItemsService와 같은 작업을 수행했으며, CubaIntegrationService를 주입했습니다 현재의 CubaApp을 얻었고 우리의 요구를 충족시키는 방법을 사용했습니다

따라서 사용자 이름과 암호를 사용하여 login 메소드를 호출하여 인증 토큰을 얻습니다 하지만 우리는 스스로 저장하지 않습니다 쿠바는 우리를 위해 그것을합니다 logout 메소드를 호출하여 인증 토큰을 취소합니다 로그인에 성공하면 userService

loadUserInfo () 메소드를 호출하여 현재 사용자 정보를로드합니다 가입 된 모든 구성 요소에 사용자 정보가 변경되었음을 알립니다 그리고 우리가 성공적으로 로그 아웃하면 똑같이 작동합니다 이제 UserService로 이동하십시오 그리고 그 내용을 다음 내용으로 대체하십시오

loadUserInfo () 메소드의 구현에서, 우리는 getUserInfo () 메소드를 사용한다 사용자 정보를 성공적으로 얻은 경우이 값을 로컬 필드에 저장합니다 이 값을 storageService를 사용하는 파일 저장소에 저장합니다 그리고 우리는 모든 가입자에게 사용자 정보가 변경되었음을 통보합니다 이제 다음과 같은 메소드를 구현해 보겠습니다

현재 사용자 정보를 가져 와서 로컬 저장소에 저장합니다 storageService를 열어 보겠습니다 그리고 다음을 놓으십시오 자, AppComponent를 열자 userInfo 필드를 추가합시다

현재 사용자가 변경 될 때마다이 값을 업데이트 할 것입니다 구현을 추가합시다 우리의 ngOnInit () 메소드 내에서, 그래서 사용자 정보가 변경되면, 우리는 새로운 사용자 정보를 얻고 로컬 필드에 저장합니다 이제 응용 프로그램을 다시 시작해 보겠습니다 그리고 로그인을 시도합시다

그래서 우리는 추가 요소가 navbar에 나타났습니다 이것은 HTML 템플리트 내에서 ngIf라는 특수 각도 지시문을 사용하기 때문입니다 userInfo가 null가 아닌지 어떤지를 조사한다 즉, 인증 된 사용자에 대해서만 추가 기능을 보여줍니다 이제 메뉴 항목을 생성, 편집 및 삭제하는 기능을 구현해 보겠습니다 파일을 업로드 할 수 있습니다 우선, MenuItemsService에 메소드를 추가해 보겠습니다

메뉴 항목을 커밋하고 제거하고 파일을 업로드하는 데 사용됩니다 다시 IDE로 돌아가십시오 MenuItemsService를 엽니 다 그리고 나는 그 내용을 다음과 같이 보충 할 것입니다 그래서 하나의 메뉴 항목을 ID로로드하기 위해 loadMenuItem을 추가했습니다

저는 CubaApp의 loadEntity 메소드를 사용하고 엔티티 이름과 ID를 전달합니다 단일 엔티티를로드하는 엔티티 뷰는 물론입니다 commitMenuItem () 메소드는 커밋 할 엔티티 이름과 paticular 항목과 함께 commitEntity () 메소드를 호출합니다 deleteMenuItem ()은 deleteEntity () 메서드를 사용합니다 엔티티 이름 및 엔티티 ID로 파일을 업로드하려면 정의 할 수있는 일반적인 방법을 가져 오십시오

우리가 사용하고자하는 것 : POST 요청 또는 GET 요청, 우리가 요청을 보내는 특정 경로 우리의 경우 그것은 파일 경로입니다 'filename'매개 변수가 추가되었습니다 이제 우리는 Swagger로갑니다 그리고 / files 경로가 파일 업로드에 사용됨을 알 수 있습니다

우리는 POST 메소드를 사용할 필요가있다 이제 IDE로 돌아가서 MenuItem 브라우저의 HTML 템플리트를 갱신하십시오 추가 필드, 새 메뉴 항목을 작성하기위한 단추 메뉴 항목을 제거하고 편집하기위한 단추 스타일을 추가해 보겠습니다 그리고 Components 클래스에 메서드를 구현하십시오

create () 메소드는 우리를 특수 경로 경로로 안내합니다 edit () 메서드는 동일하게 처리하지만 추가 매개 변수 인 itemid를 전달합니다 우리는 조금 후에 MenuItem 편집기를 구현할 것입니다 remove () 메서드는 menuItemsService에서 deleteMenuItem () 메서드를 호출하기 만합니다

그런 다음 MenuItems 목록에서 삭제 된 항목을 제거합니다 애플리케이션을 열면 변경 사항이 표시됩니다 이제 Create 버튼과 Edit / Remove 버튼을 볼 수 있습니다 지금은 '만들기'또는 '수정'을 클릭해도 아무런 효과가 없습니다 정의 된 라우트에 대한 컴포 M 트가 없기 때

입니다 그러나 우리는 모든 항목을 삭제할 수 있습니다 메뉴 항목을 편집하기위한 구성 요소를 만듭니다 IDE로 돌아가서 새로운 각도 요소를 만듭니다 이름 설정 : 메뉴 항목 편집

자, HTML 템플릿을 열어 보겠습니다 그 내용을 다음 내용으로 대체하십시오 모든 메뉴 항목 속성에 대한 필드가있는 양식 일뿐입니다 및 두 개의 버튼 : 변경 사항을 커밋하고 변경 사항을 거부합니다 컴포넌트 클래스를 열고 내용을 다음과 같이 바꾸자

이 구성 요소가 열리면 URL에 ID 매개 변수가 있는지 확인합니다 그렇다면 MenuItemService에서 loadMenuItem () 메서드를 호출합니다 기존 메뉴 항목을로드하거나 새 메뉴 항목 만 만들면됩니다 '뒤로'를 클릭하면 이전 페이지로 돌아갑니다 'Commit'을 클릭하면 새로운 이미지 파일이있는 경우

사용자가 새 이미지 파일을 업로드 한 경우 이 파일을 서버에 업로드해야합니다 이 파일에 대한 FileDescriptor를 만든다 이 메소드가 성공적으로 완료되면 생성 된 FileDescriptor 엔티티를 구문 분석 할 수 있습니다 메뉴 항목에 대해 설정 한 다음이 메뉴 항목을 커밋하십시오 또는 새로운 이미지 파일이 없으면 메뉴 항목을 커밋합니다

MenuItemService에서 commitMenuItem () 메서드를 호출하여 그런 다음 이전 페이지로 돌아갑니다 이제 새로 생성 된 구성 요소에 대한 라우팅 규칙을 추가해야합니다 app-routingmodule

ts 파일을 열어 보겠습니다 다음 정보를 추가하십시오 '편집'과 '추가 ID 매개 변수로 편집'에 대해 두 개의 경로를 추가했습니다 이 두 경로 모두 MenuItemEditComponent를 엽니 다 이제 메뉴 항목 편집기가 어떻게 작동하는지 확인해 보겠습니다

페이지를 새로 고치십시오 예를 들어, '편집'을 클릭하십시오 편집기를 볼 수 있습니다 예를 들어 가격을 변경할 수 있습니다 '저장'을 클릭하십시오

새 메뉴 항목을 만들어 보겠습니다 파일을 선택하십시오 이 하나 이름을 설정하십시오 무게

그리고 가격 '저장'을 클릭하십시오 또는 '취소'를 클릭하고 변경 사항을 저장하지 않고 되돌아 갈 수 있습니다 우리가 추가 할 다음 기회는 주문을 할 수있는 능력입니다 기본 아이디어는 사용자가 장바구니에 메뉴 항목을 추가 할 수 있다는 것입니다

새 주문을 만들려면 주문 주문을 클릭하십시오 주문을 위해 CUBA 애플리케이션 서비스 방법을 실행합니다 그래서 우리는 CUBA 애플리케이션에 서비스를 생성해야합니다 Studio로 이동하십시오 미들웨어 섹션을 엽니 다

새로 작성 → 서비스를 클릭하십시오 Set Name : OrderService '확인'을 클릭하십시오 그런 다음 OrderServiceBean을 선택하고 'IDE'를 클릭하십시오 OrderService 인터페이스로 전환하고 두 가지 메소드를 추가하십시오

그런 다음 OrderServiceBean으로 돌아가서이 메소드를 구현하십시오 placeOrder () 메소드는 OrderItems를 승인하고, 그 (것)들을위한 새로운 순서를 창조하고, 현재 사용자와 그것을 올린다 userSessionSource에서 가져온 OrderStatus를 COOKING으로 설정 한 다음 주문을 커밋하고이를 반환합니다 cancelOrder () 메소드가로드를 시도합니다 ID로 데이터베이스의 기존 주문 주어진 ID로 데이터베이스에 순서가있는 경우 상태는 CANCELED로 설정됩니다

그리고 그 방법은 그 명령을 위탁합니다 그렇지 않으면 주어진 ID로 주문이 없다는 새로운 예외가 발생합니다 이제 비즈니스 방법에 접근 할 수있게합시다 REST API를 통한 외부 클라이언트 용 Studio를 엽니 다

서비스 편집기를 열고 REST 메소드 탭으로 전환하십시오 Tick ​​REST 호출 허용 두 가지 방법 모두 : placeOrder (), cancelOrder () '확인'을 클릭하십시오 Studio는 rest-servicesxml 파일을 만들고 메서드 설명을 여기에 씁니다 응용 프로그램 서버를 다시 시작하면 HTTP 요청을 사용하여 비즈니스 메소드를 호출 할 수 있습니다

응용 프로그램을 다시 시작하십시오 CUBA 응용 프로그램이 다시 시작되는 동안 Angular 응용 프로그램으로 진행해 봅시다 먼저 OrderItem 및 Order에 대한 모델 클래스를 추가해야합니다 IDE로 이동합니다 _model 디렉토리 내에서 새 클래스를 만듭니다

이름은 OrderItem입니다 OrderItem에는 id, MenuItem 및 수량에 대한 참조가 있습니다 우리는 하나 더 많은 수업을 만들어야합니다 주문 Order 클래스에는 사용자에 대한 참조가 있으며, OrderItem의] 렉션, OrderStatus 유형으로 표시되는 상태 'COOKING', 'DELIVERING', 'FINISHED', 'CANCELED'값, 작성일에 대한 createTs 필드가 있습니다

이제 새로운 모델 클래스가 생성되면 주문 작업을위한 새로운 서비스를 만들어 보겠습니다 _services 디렉토리 내에서 새 서비스를 만듭니다 이름 : 주문 그것을 열어 내용을 바꾸자 AlertService, CubaIntegrationService를 삽입하고 CubaApp 인스턴스를 가져옵니다

주문하려면 CubaApp의 invokeService () 메소드를 사용합니다 및 SERVICE_NAME이 (가) 전달되었습니다 (우리의 쿠바 신청서와 동일합니다) 메소드 명 'placeOrder'와 입력 매개 변수 우리가해야 할 placeOrder에 대한 주문 항목 모음을 전달합니다 또한 invokeService () 메소드에 대해 cancelOrder ()를 호출합니다 order

id를 입력 매개 변수로 전달하십시오 이제 MenuItems 브라우저를 업데이트 해 보겠습니다 그래서 그것은 주문할 수 있습니다 menu-items-browsecomponent

html을 열자 그 내용을 다음 코드로 대체하십시오 menu-items-browsecomponentts를 엽니 다

그 내용을 다음으로 대체하십시오 addToCart ()와 같은 여러 메소드를 추가했습니다 이 메소드는 메뉴 항목을 허용합니다 동일한 메뉴 항목을 참조하는 주문 항목이있는 경우 OrderItem 클래스의 Quantity 필드 값을 늘리면됩니다 또는 주어진 메뉴 항목에 대한 주문 항목이없는 경우, 그런 다음 새로운 주문 항목을 만듭니다

수량을 하나로 설정하고 OrderItems] 렉션에 추가하십시오 장바구니에서 주문 항목을 제거 할 수 있습니다 그리고 orderService의 placeOrder () 메소드를 호출하는 순서를 지정합니다 그런 다음 주문 항목을 빈 콜렉션으로 설정합니다 또한 메소드가 있습니다

추가 된 모든 주문 항목의 총 금액을 계산합니다 우리는이 사용자 카트를 저장하려고합니다 저장소에 저장하고이 메소드를 구현해야합니다 StorageService를 열고 다음 메소드를 추가하십시오 또한 하나의 상수

이 메소드는 현재 사용자와 동일하지만 cartItemsKey 접두사와 사용자 ID를 사용하여 장바구니 항목 키를 만듭니다 그래서 각 사용자는 자신의 카트를 가지고 있습니다 또한 우리는 제공자에게 OrderService를 추가하여 주사가 가능하도록해야합니다 appmodule

ts 파일을 엽니 다 ProviderService 속성에 OrderService를 추가합니다 자, 우리의 응용 프로그램을 다시 시작합시다 이제 응용 프로그램을 엽니 다 '로그인'을 클릭하십시오

이제 카트가 보입니다 메뉴 항목을 추가 할 수 있습니다 그런 다음 '주문하기'를 클릭하십시오 그리고 다시, 우리는 메뉴 항목을 추가 할 수 있고, 우리는 총 가격을 볼 수 있고, 주문할 수 있습니다 추가해야 할 마지막 사항은 사용자의 주문을 검토하는 기능입니다

이를 위해 나머지 쿼리를 생성합니다 사용자 로그인별로 주문을 필터링합니다 Studio로 이동하십시오 데이터 모델 섹션을 엽니 다 주문 엔터티를 선택하십시오

새로 작성 → REST 조회를 누르십시오 이름 설정 : user-orders-query 보기 설정 : 주문보기 JPQL 쿼리를 설정합니다 사용자 로그인이 userLogin 매개 변수와 같은 위치에서 주문을로드하려고합니다

이 매개 변수를 추가해 보겠습니다 이름 : userLogin 유형 : 문자열 '확인'을 클릭하십시오 이제 쿠바 응용 프로그램을 다시 시작해야합니다

이제 Angular 응용 프로그램으로 이동하십시오 OrderService를 엽니 다 내용을 다음 내용으로 대체하십시오 나는 UserService와 getOrders () 메소드를위한 injectin을 추가했다 getOrders () 메소드는 CubaApp에서 query 메소드를 호출합니다

ORDER_ENTITY_NAME과 (와) 질의 이름 전달 userLogin 매개 변수의 값으로 따라서이 사용자 로그인 정보는 user-orders-query 매개 변수와 같은 이름입니다 이제 주문을 표시 할 새 구성 요소를 만들어 보겠습니다 이름 설정 : 주문 HTML 템플리트를 다음 템플리트로 대체합시다 그냥 간단한 테이블

스타일을 추가하십시오 그리고 구성 요소 컨텐츠를 다음 데이터로 대체하십시오 loadOrders () 메서드가 있습니다 OrderService에서 getOrders () 메소드를 호출합니다 cancelOrder () 메소드를 호출 한 cancel 메소드가 있습니다

그리고 우리는 주문의 총 가격을 계산하는 방법을 가지고 있습니다 이제 라우팅 규칙을 추가해 보겠습니다 우리가 할 수있게 ordercompontnes로 이동하십시오 app-routing

modulets 파일을 엽니 다 'Orders'경로는 OrdersComponent를 엽니 다 페이지를 다시 시작해 보겠습니다 로그인하여 주문을 탐색하고 생성 된 두 개의 주문을 볼 수 있습니다

그리고 우리 둘 중 하나, 둘 다 취소 할 수 있습니다 웹 세미나의 주요 목표에 도달했습니다 우리는 REST API 메소드를 살펴보고 Angular 애플리케이션에서이를 실행할 수있는 방법을 살펴 보았습니다 cuba-rest-js 라이브러리를 사용하여 REST API 사용을 용이하게합니다 보고 주셔서 감사합니다!

hackGVSU: REST API and LTI with Blackboard Learn

2018 hackGVSU hackathon에 오신 것을 환영합니다! 이 비디오는 hackathon의 REST API 카테고리를위한 프로그램을 개발하는 방법 우리는 가지고있다

두 가지 범주에 대한 설명 : 기본 HTML과 고급 REST hackGVSU에 속한 API는 hackathon 당일에 자주 질문을 받았습니다 우리는 당신이 이해할 수 있도록 도움을 줄 수있는 직접 교육을 받게 될 것입니다 이 자료와 더 깊은 그래서 우리 자신의 Blackboard Learn 우리는 아마존 웹 서비스 시장에서 그렇게 할 수 있습니다 설치 한 다음 이전 비디오에서이 데모 용으로 사용할 것입니다 간단한 HTML 앱과 위젯을 Blackboard Learn 시스템에 통합하는 방법 이것이 hackathon의 첫 번째 카테고리가 될 것입니다

우리가 내부의 딥 데이터에 액세스하기 위해 REST API를 사용하려는 고급 카테고리 Blackboard 학습 과정을 통해 학생 회사에 대한 정보를 얻으십시오 정보를 제공하고이를 통해 앱을 개발하기 위해 혁신 할 수 있습니다 데이터를 가지고 있으므로 Blackboard Learn running은 첫 번째 단계는 이제 다음 단계는 자신의 웹 서버 가이 실행하는 것입니다 사실 학생들에게 비싸지 않아도됩니다 종종 무료입니다 예 : Amazon Web Services 클라우드 9 시스템은 학생들에게 무료 계정을 만들고 매우 융통성있게 만들어 다른 웹 호스팅 시스템을 사용할 수 있습니다 한 달에 한 번 같이 우리는 한 달에 5 달러를 벌어 들일 수 있습니다

모든 웹 서버를 제어 할 수있는 자체 가상 서버 설정은 아마존 웹 서비스 탄력적 인 콩 줄기가 또 다른 위대한 것입니다 REST API 서비스를 무료로 개발할 수있는 옵션 이 시점에서 나는 서버가 실행 중이고이 로그인되어 있습니다 아파치와 PHP가 이제 시작되었습니다 API에 관한 약간의 정보를 칠판에 읽어서 약간의 자료를 제공한다 커뮤니티에 칠판 통신망 웹 사이트 및 데모 코드도 포함되어 있습니다

그래서 우리가 REST API의 데모를 찾아야한다면 우리는 PHP 외에 다른 언어의 옵션이 있음을 알 수 있습니다 이 비디오에 대한 데모를 위해 이미 응용 프로그램을 사용할 것입니다 지금 칠판에 의해 제공된 PHP 데모 코드로 개발되었습니다 내 응용 프로그램은 내 github 계정에서 다운로드 할 수 있습니다 코스 게임이라고 불리우며 시작합시다

이 응용 프로그램을 다운로드하면 Zip 파일로 나타나고 다음으로 단계는 서버에 압축을 해제하는 것입니다 그래서 내 응용 프로그램은 아파치 서버의 htdocs 디렉토리에있다 코스 게임은 폴더이므로 여기서는 indexphp가 데이터와 클래스를 얻는 것을 보았습니다 이 모든 것들은 우리가 다운로드 한 zip 파일의 github에서 왔습니다

응용 프로그램이 올바르게 다운로드되었는지 확인하고 계속 진행할 수 있습니다 당신이 볼 수있는대로 그것을 실행하십시오 나는 당신이 있다면 그냥 무료 도메인으로 내 URL을 가지고 도메인을 구입할 필요가없는 특정 IP 주소로 실행 IP 통신을 알면 네가 살 수있게 될거야, 네가 할 수있을거야 내가 도메인을 구성한 다음 SSL을 실행하고 싶다면 자유롭게 사용할 수 있습니다 암호화하여 SSL 인증서를 암호화하여 응용 프로그램이 IP를 통해 액세스하는 경우 주소와 HTTP 만 있으면됩니다

그래서 이것이 응용 프로그램입니다 추가 구성없이 구성없이 보일 것입니다 다음 단계는 코드 수정으로이 애플리케이션을 추가하는 것입니다 칠판에 우리가 어떻게이 응용 프로그램이 대화 형 응용 프로그램을 사용자와 함께 사용하므로 LTI를 사용하게 될 것입니다 제공하는 기술 해석 상호 운용성 표준을 학습해야합니다

학습에서 우리의 응용 프로그램에 반환되는 변수 세트 이 경우 관리 시스템 Blackboard Learn은 어떤 사용자가 버튼을 클릭했는지 파악한 다음 그 버튼을 클릭 할 수 있습니다 예를 들어,이 과정에서의 컨텍스트를 구성하고 이 코스의 내부에서 샘플 코스로 이동합니다 개발 된 스프레드 시트 온라인 콘텐츠를 사용하여 문제 해결 물론 우리는 이것을 호출하고 우리가 호출 할 새로운 컨텐츠 영역을 생성 할 것입니다 HACC GVSU를 제출하고 지금 제출하십시오 하단에 생성되어 있으므로 이동하십시오

위로 가기 그리고이 시점에서 이것은 사용자 생성을위한 우리의 캔버스가 될 것입니다 방금 설치 한 응용 프로그램의 인터페이스 URL을 복사 할 것입니다 다음에는 내 응용 프로그램에 콘텐츠를 작성하고 웹을 사용합니다 지금이 웹 링크는 흑판이 동적으로 생성하는 것입니다 실제로 링크를 클릭하는 것만으로 이것이 우리가 아는 링크가 아닙니다 해당 LTI 표준의 일부인 백그라운드에서 게시 양식을 작성하십시오

이 시점에서 나는이 모든 코스 게임에 갈 것이며 우리는 URL을 입력 한 다음 키는이 링크를 도구 제공 업체에게 선택하는 것입니다 도구 공급자 우물 공구 제공자는 우연히 칠판 관리자가 승인 한 외부 신청서 그러면 외부 응용 프로그램과 정보를 공유 할 수 있습니다 도구 공급자가 잘 만들어졌습니다이 도구 공급자는 해당 시스템에서 만들어졌습니다 관리자 및 Blackboard Learn의 관리자 패널입니다

빌딩 블록 링크를 찾은 다음 LTI 툴 제공 업체를 찾아야합니다 기본적으로 특정 대화 형 작업에 대한 승인을 만들 수 있습니다 대화식 정보를 외부 응용 프로그램에 전달하기위한 LTI 그래서 지금 편집을 할 수있는 응용 프로그램을 구성하고 도메인 이름이 승인되었습니다 그런 다음 라이센스 정보를 설정합니다 응용 프로그램을 검사하지는 않지만 라이센스가 부여 된 다음 우리는 이 개발 환경에서 데이터를 전송하게되어 기쁘다

좋아, 내 링크로 돌아 가자이 시점에서 제출을 눌러라 칠판 응용 프로그램이 구성되는 시간 우리가 이것을 공유한다면 다른 학교에서의 신청서는 칠판 관리자가하는 것입니다 그들은 코스에서 장소를 만들 것인가? LTI 링크를 만들면 모든 나머지 API가 아직 올라 오지 않아서 이 시점에서 나머지 API 통합의 많은 부분이이 시점에서 진행됩니다

그리고 우리의 응용 프로그램을 시작합니다 포스트 폼이 만들어졌고 이제 우리는 리모컨에 있습니다 우리는 LTI 정보를 전달했습니다 코스 게임 응용 프로그램을 나머지 응용 프로그램으로 구성하십시오 정확히 우리가 기대할 수는 있지만 의사 소통은 칠판에서 일어났습니다

우리의 응용 프로그램에 이르기까지 우리가 검토한다면 다음 단계로 넘어 갑시다 지금까지 github에있는 명령은 LTI를 사용하여 LTI 부분을 구성했습니다 이제 나머지 API를 만들려고합니다 응용 프로그램 ID와 우리는 나머지 api와 함께 일할 것입니다 실제로 칠판 통신으로 작업하기 위해 개발자에게로 이동해야합니다

나머지 API를 사용하여 개발자로 등록한 다음 키를 만들고 칠판 애플리케이션을 호스팅하는 사람들에게 우리를 알려줄 비밀 이 웹 사이트에서 허용하는 허가를 얻을 수있는 기회를 제공 할 것입니다 API를 탐색하여 우리가 가지고있는 다양한 옵션을 볼 수 있습니다 REST API 내에서 다음 단계로 넘어가겠습니다 내 앱 링크를 클릭하고 첫 번째 애플리케이션을 등록 해 보겠습니다 그 전화 해킹 GVSU 응용 프로그램과 이것은 내 첫 번째 애플 리케이션입니다 우리가 응용 프로그램 키와 비밀을 가지고 지금이 시점에서 저장하고 지금 눌러 그들이 우리에게 다시 표시되지 않기 때문에 우리는 그것을 기록 할 필요가있다

응용 프로그램 키는 비밀이 아니지만 아마도 우리가 그것을 넣어야한다면 워드 문서 또는 어딘가에 저장하는 것이 매우 중요합니다 우리는 새로운 것들을 재생성 할 수 있습니다 그렇다고 큰 문제는 아니지만, 우리에게 다시 사용할 수 없게 계속할 수 있습니다 앞서 쓰고 쓰지 말고 쓰십시오 나는 계속해서 그들을 연결합니다

그들이이 시점에 있어야 할 곳에 응용 프로그램에 가보자 github 코드를 다운로드 한 서버와 파일을 추가합니다 클래스 디렉토리에서 파일을 편집하고 파일을 편집하십시오 콘 스턴스와이 파일에 뛰어 들어가서 핵심 변수와 우리 애플리케이션 키는 코드가 찾고있는 바로 그 열쇠입니다 여기에 여기에 우리가 가서이 값으로 붙여 넣고 우리는 그 비밀은 당신이 사생활을 염두에두고 보안을 염두에 두었다면 아마 당신은 우리는이 비디오를 공개적으로 키와 비밀로 게시 할까봐 걱정했습니다

이것을 녹음하면이 앱을 삭제할 것이고 물론이 키와 비밀을 지울 것입니다 유용하지 않을 것이므로 자신의 것으로 바꿀 필요가 있습니다 이 시점에서이 파일을 저장하고 편집기를 종료하자 계속 눌러주십시오 계속해서 응용 프로그램 ID가 잠시 전에이 애플리케이션 ID가 애플리케이션 ID와 다릅니다

이 애플리케이션 ID는 기본 화면에서 공개로 표시됩니다 다양한 조직에 줄 수있는 애플리케이션 ID입니다 우리가 현재 개발자 또는 회사로 확인 된 방법은 무엇입니까? 학교 칠판 관리자로부터 우리의 통합을 포함하는 허가 이것이 칠판으로 어떻게 이루어 졌는지 보자 이제 우리는 다시 우리가 LTI 링크로 작업하는 시스템 관리자 패널은 LTI가 있다는 것을 기억합니다 빌딩 블록이 이제는 API에 남아 있기 때문에이 시점에서 애플리케이션 ID와 실제로 Blackboard에 대한 액세스 권한을 부여하는 사용자 Learn learn we go 앞으로 제출하고 제출을 눌러서이 애플리케이션을 학생에게 가서 전환 할 스위치를 클릭하면 볼 수 있습니다

학생은 내가 가서 링크를 클릭하고 학생 정보를 지금 보게 될 것입니다 강사의 이전보기에서 첨부 된 점수가 어떤 데이터가 없었어요 강사가 가지고 있지 않았기 때문에 학년이 없지만 지금은 나와 관련된 데이터를 클릭하여 애플리케이션을 테스트 할 수 있습니다 on change instructor 이것은 물론 다른 등급을 시뮬레이션하는 것입니다 아마도 나는 새로운 강사와 함께 할 것입니다 우리가 그랬던 것처럼 내 학년이 미래 학기에 어떻게 될지를 보여주는 새로운 학기 코드는 접근성을 위해 자동으로 테이블을 변경합니다

스크린 리더가 업데이트를 읽을 수있게됩니다 이것은 나머지 API 통합 사이를 빠르게 정리하는 것입니다 Blackboard 학습 및 자체 웹 서버를 사용한 다음 REST API를 사용하여 우리가 우리 자신의 응용 프로그램을 호스팅 할 필요가 있는지 검토하고 내가 여기에 내 자신의 서버를 실행하는 것을 볼 수 있습니다 그러면 우리는 이것에 대한 몇 가지 코드가 필요합니다 서버가 REST API를 사용하여 칠판에 연결 한 다음 우리는 서버에 대한 대화 형 링크가 있고 링크가있을 것이라고 테스트합니다

포스트가 링크에서 요청한 이후로 우리는 아마도 응용 프로그램 호출 및 링크를 클릭 한 사용자 그러면 우리 서버가 칠판에 다시 연결하여 데이터를 꺼내고 그 다음에 사용자에게 제시하십시오 REST API를 만드는 것은 불가능하지 않습니다 LTI없이 통합하기 때문에 일단 우리는 sis admin의 허가를 받았다 응용 프로그램이 승인되면 우리는이 서버에서 간단히 실행할 수 있습니다 문맥이 없으므로 우리는 누가 지금 기록되어 있는지 알 수 없을 것입니다

우리는 흑판에 데이터를 가져올 수 있습니다 예 : 오늘 GVSU에는 57 개의 A 급이 있으며 2 개의 F 급이 게시되었습니다 칠판 시스템 "을 만들었습니다 그래서 우리는 언제든지 당겨서 할 수있었습니다 성적을 표시 한 다음 정보를 최종 사용자에게 표시 그래서이 연습은 조금 더 배우는 데 도움이 되었기를 바랍니다

REST API에 대한 것이지만 실제로 웹 디자인과 웹 개발을 할 수 있습니다 입문 코스에서 배운 기술을 배웠습니다 엔터프라이즈 응용 프로그램 개발에 참여하고 데모 코드를 자유롭게 사용하십시오 코드가 실행 중이고 데이터가 들어온 다음 수정을 시작할 수있는 능력 새 것을 코딩 해 주셔서 감사합니다 hackGVSU에서 재미있게 지내십시오