JavaScript와 Azure 함수를 사용하여 이력서 API를 구축하는 방법은 무엇입니까?
37393 단어 serverlesschallengewebdevazure
프레젠테이션
너는 RESTAPI를 말아서 나의 이력서를 볼 수 있다
curl -L http://rishabcloud.com/resume
설치 프로그램
선결 조건 검사
JSON으로 프로필 만들기
나는 JSON-based standard format resume schema을 복사했다. 나는 나의 정보에서 그것을 편집할 것이다.내가 JSON을 편집한 후에 나는 마침내 이것을 얻었다.
{
"basics": {
"name": "Rishab Kumar",
"label": "CloudOps/DevOps",
"picture": "",
"email": "[email protected]",
"website": "http://rishabkumar.com",
"summary": "AWS and Linux entusiast with some experience in the Cloud.",
"location": {
"address": "Virginia Street",
"city": "Kingston",
"countryCode": "CA",
"region": "Ontario"
},
"profiles": [{
"network": "Twitter",
"username": "rishabk7",
"url": "http://twitter.com/rishabk7"
},
{
"network": "Linkedin",
"username": "Rishab Kumar",
"url": "https://www.linkedin.com/in/rishabkumar7/"
},
{
"network": "GitHub",
"username": "rishabkumar7",
"url": "https://github.com/rishabkumar7"
}]
},
"work": [{
"company": "ECi Software Solutions",
"position": "CloudOps Specialist",
"startDate": "2013-05-01",
"endDate": "Present",
"summary": "Description...",
}],
"education": [{
"institution": "St. Lawrence College",
"area": "Computer Networking",
"studyType": "Diploma",
"startDate": "2016-05-01",
"endDate": "2018-06-01",
}],
"awards": [{
"title": "AWS Certified Developer Associate",
"date": "2017-11-01",
"awarder": "St. Lawrence College",
},
{
"title": "AWS Certified Soultions Architect Associate",
"date": "2017-11-01",
"awarder": "St. Lawrence College",
},
{
"title": "AWS Certified Cloud Practitioner",
"date": "2017-11-01",
"awarder": "St. Lawrence College",
},
{
"title": "Microsoft Certified Azure Fundamentals",
"date": "2017-11-01",
"awarder": "St. Lawrence College",
},
{
"title": "OCI Foundatios 2020 Certified Associate",
"date": "2017-11-01",
"awarder": "St. Lawrence College",
}
],
"skills": [
{
"name": "AWS",
"level": "Intermediate",
"keywords": [
"Cloud",
"Lambda",
"S3",
"CloudFront"
]
},
{
"name": "Azure",
"level": "Beginner",
"keywords": [
"Azure Functions",
"VM",
"Storage"
]
},
{
"name": "JavaScript",
"level": "Intermediate",
"keywords": [
"ECMAScript",
"ES6",
"Node.js",
"Web",
"Front End"
]
},
{
"name": "React",
"level": "Intermediate",
"keywords": [
"SPA",
"Web",
"Front End"
]
},
{
"name": "Vue",
"level": "Intermediate",
"keywords": [
"SPA",
"Web",
"Front End"
]
},
{
"name": "Docker",
"level": "Intermediate",
"keywords": [
"Containers"
]
}
],
"interests": [{
"name": "Volleyball",
"keywords": [
"Beach",
"Court"
]
}]
}
이 JSON 프로필을 저장합니다. 잠시 후에 필요합니다.로컬 기능 항목 만들기
Azure 함수에서 함수 항목은 하나의 용기로 하나 이상의 단독 함수를 포함하고 모든 함수는 특정한 트리거에 응답한다.프로젝트의 모든 기능은 같은 로컬과 숙주 설정을 공유합니다.이 절에서 하나의 함수를 포함하는 함수 항목을 만들 것입니다.
func init 명령을 실행합니다. 아래와 같이 지정한 실행을 사용할 때 LocalFunctionProj라는 폴더에 함수 항목을 만듭니다.
func init LocalFunctionProj --javascript
프로젝트 폴더로 이동합니다.cd LocalFunctionProj
이 폴더는 로컬이라는 프로필을 포함한 프로젝트의 다양한 파일을 포함합니다.설치.json과 호스트.json.본고장이니까.설치.json은 Azure에서 다운로드한 기밀을 포함할 수 있습니다. 기본적으로 이 파일은 에서 원본 코드를 관리하지 않습니다.gitignore 파일.다음 명령을 사용하여 함수를 프로젝트에 추가합니다. 여기서 --name 매개 변수는 함수의 유일한 이름(resume)이고 --template 매개 변수는 함수의 트리거(HTTP)를 지정합니다.
func new --name resume --template "HTTP trigger"
func new
은 함수 이름과 일치하는 하위 폴더를 만듭니다. 이 하위 폴더는 프로젝트에서 선택한 언어에 맞는 코드 파일과function이라는 프로필을 포함합니다.json.지수회사 명
지수js는 함수의 설정에 따라 트리거하는 함수를 내보냅니다.json.
module.exports = async function (context, req) {
context.log('JavaScript HTTP trigger function processed a request.');
const name = (req.query.name || (req.body && req.body.name));
const responseMessage = name
? "Hello, " + name + ". This HTTP triggered function executed successfully."
: "This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response.";
context.res = {
// status: 200, /* Defaults to 200 */
body: responseMessage
};
}
이제 색인을 편집합니다.js, 우리 JSON 이력서로 응답할 수 있도록 합니다.다음과 같이 jsonData에서 이력서 JSON을 제공합니다.module.exports = function(context, req) {
jsonData = {
"basics": {
"name": "Rishab Kumar",
"label": "CloudOps/DevOps",
"picture": "",
"email": "[email protected]",
"website": "http://rishabkumar.com",
"summary": "AWS and Linux entusiast with some experience in the Cloud.",
"location": {
"address": "Virginia Street",
"city": "Kingston",
"countryCode": "CA",
"region": "Ontario"
},
"profiles": [{
"network": "Twitter",
"username": "rishabk7",
"url": "http://twitter.com/rishabk7"
},
{
"network": "Linkedin",
"username": "Rishab Kumar",
"url": "https://www.linkedin.com/in/rishabkumar7/"
},
{
"network": "GitHub",
"username": "rishabkumar7",
"url": "https://github.com/rishabkumar7"
}]
},
"work": [{
"company": "ECi Software Solutions",
"position": "CloudOps Specialist",
"startDate": "2013-05-01",
"endDate": "Present",
"summary": "Description...",
}],
"education": [{
"institution": "St. Lawrence College",
"area": "Computer Networking",
"studyType": "Diploma",
"startDate": "2016-05-01",
"endDate": "2018-06-01",
}],
"awards": [{
"title": "AWS Certified Developer Associate",
"date": "2017-11-01",
"awarder": "St. Lawrence College",
},
{
"title": "AWS Certified Soultions Architect Associate",
"date": "2017-11-01",
"awarder": "St. Lawrence College",
},
{
"title": "AWS Certified Cloud Practitioner",
"date": "2017-11-01",
"awarder": "St. Lawrence College",
},
{
"title": "Microsoft Certified Azure Fundamentals",
"date": "2017-11-01",
"awarder": "St. Lawrence College",
},
{
"title": "OCI Foundatios 2020 Certified Associate",
"date": "2017-11-01",
"awarder": "St. Lawrence College",
}
],
"skills": [
{
"name": "AWS",
"level": "Intermediate",
"keywords": [
"Cloud",
"Lambda",
"S3",
"CloudFront"
]
},
{
"name": "Azure",
"level": "Beginner",
"keywords": [
"Azure Functions",
"VM",
"Storage"
]
},
{
"name": "JavaScript",
"level": "Intermediate",
"keywords": [
"ECMAScript",
"ES6",
"Node.js",
"Web",
"Front End"
]
},
{
"name": "React",
"level": "Intermediate",
"keywords": [
"SPA",
"Web",
"Front End"
]
},
{
"name": "Vue",
"level": "Intermediate",
"keywords": [
"SPA",
"Web",
"Front End"
]
},
{
"name": "Docker",
"level": "Intermediate",
"keywords": [
"Containers"
]
}
],
"interests": [{
"name": "Volleyball",
"keywords": [
"Beach",
"Court"
]
}]
}
context.res = {
body: JSON.stringify(jsonData, null, 2)
};
context.done();
};
HTTP 트리거에 대해 함수는 함수에 정의된 변수 req의 요청 데이터를 수신합니다.json.함수에 $return으로 정의된 대상을 되돌려줍니다.json은 응답입니다.작용json
작용json은 트리거 형식을 포함한 함수의 입력과 출력 연결을 정의하는 프로필입니다.
{
"bindings": [
{
"authLevel": "anonymous",
"type": "httpTrigger",
"direction": "in",
"name": "req",
"methods": [
"get",
"post"
]
},
{
"type": "http",
"direction": "out",
"name": "res"
}
]
}
참고: 기본적으로 authLevel
은 정상적인 작업으로 설정되어 있으며, 이력서에 누구나 접근할 수 있도록 익명으로 변경합니다.모든 귀속은 방향, 유형, 유일한 이름이 필요합니다.HTTP 트리거는 httpTrigger 형식의 입력 귀속과 HTTP 형식의 출력 귀속을 가지고 있습니다.
로컬 실행 함수
LocalFunctionProj 폴더에서 로컬 Azure Functions 실행 시 호스트를 시작하여 함수를 실행합니다.
func start
출력의 끝에 다음 줄을 표시해야 합니다....
Now listening on: http://0.0.0.0:7071
Application started. Press Ctrl+C to shut down.
Http Functions:
HttpExample: [GET,POST] http://localhost:7071/api/resume
...
이력서 기능의 URL을 이 출력에서 브라우저로 복사합니다. 전체 URL은 http://localhost:7071/api/resume입니다.브라우저에는 다음과 같은 메시지가 표시됩니다./api/
의 http://localhost:7071/api/resume/
에서 벗어나기 위해 host.json
파일에서 다음 작업을 수행할 수 있습니다.routePrefix 속성 추가:
"extensions": {
"http": {
"routePrefix": ""
}
}
따라서 완전한 host.json
은 다음과 같이 보일 것이다.{
"version": "2.0",
"logging": {
"applicationInsights": {
"samplingSettings": {
"isEnabled": true,
"excludedTypes": "Request"
}
}
},
"extensions": {
"http": {
"routePrefix": ""
}
},
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle",
"version": "[1.*, 2.0.0)"
}
}
프로젝트를 시작하는 터미널은 요청을 보낼 때 로그 출력을 표시합니다.준비가 되면 Ctrl+C를 사용하고
y
정지 함수 호스트를 선택하십시오.기능을 위한 Azure 지원 리소스 만들기
기능 코드를 Azure에 배포하기 전에 다음 세 가지 리소스를 생성해야 합니다.
만약 아직 이렇게 하지 않았다면, azlogin 명령을 사용하여 Azure에 로그인하십시오.
az login
az group create 명령을 사용하여 리소스 그룹을 생성합니다.다음 예는 AzureFunctionsQuickstart-rg
영역에서 westeurope
이라는 자원 그룹을 만듭니다.(일반적으로 az account list-locations
명령의 사용 가능한 영역을 사용하여 근처 영역에 자원 그룹과 자원을 생성합니다.)az group create --name AzureFunctionsQuickstart-rg --location westeurope
az storage account create 명령을 사용하여 리소스 그룹 및 영역에 공통 스토리지 계정을 생성합니다.다음 예제에서는 <STORAGE_NAME>
을 글로벌 고유 이름으로 대체합니다.이름은 3~24자의 숫자와 소문자만 포함할 수 있습니다.Standard_LRS
은 일반 계정인 supported by Functions을 지정합니다.az storage account create --name <STORAGE_NAME> --location westeurope --resource-group AzureFunctionsQuickstart-rg --sku Standard_LRS
스토리지 계정은 이 빠른 시작을 위해 몇 센트(USD)만 지불하면 됩니다.az functionapp create 명령을 사용하여 함수 응용 프로그램을 만듭니다.다음 예제에서는
<STORAGE_NAME>
을 이전 단계에서 사용한 계정 이름으로 바꾸고 <APP_NAME>
을 전역적으로 유일한 이름으로 바꿉니다.<APP_NAME>
은 기능 응용 프로그램의 기본 DNS 도메인이기도 합니다.az functionapp create --resource-group AzureFunctionsQuickstart-rg --consumption-plan-location westeurope --runtime node --runtime-version 10 --functions-version 2 --name <APP_NAME> --storage-account <STORAGE_NAME>
Azure에 기능 프로젝트 배포
필요한 자원이 있습니다. 현재 func azure functionapp publish 명령을 사용하여 로컬 함수 프로젝트를 Azure의 함수 프로그램에 배치할 수 있습니다.다음 예제에서는
<APP_NAME>
을 응용 프로그램의 이름으로 바꿉니다.func azure functionapp publish <APP_NAME>
오류가 발생하면''이라는 응용 프로그램을 찾을 수 없습니다.몇 초만 기다려 주십시오. 이전 az functionapp create
명령을 실행한 후에 Azure가 프로그램을 완전히 초기화하지 않았을 수도 있습니다.publish 명령은 다음과 같은 결과를 보여줍니다.
Getting site publishing info...
Creating archive for current directory...
Performing remote build for functions project.
...
Upload completed successfully.
Deployment completed successfully.
Syncing triggers...
Functions in myapphttp:
resume - [httpTrigger]
Invoke url: https://myapphttp.azurewebsites.net/resume
Azure에서 함수 호출
함수는 HTTP 트리거를 사용하기 때문에 브라우저에서나 curl 같은 도구를 사용하여 URL에 HTTP 요청을 보내서 호출할 수 있습니다.이 두 가지 상황에서 코드 URL 매개 변수는 모두 유일한 함수 키로 권한 수여 호출 함수 단점에 사용된다.
게시 명령 출력에 표시되는 전체 호출 URL을 브라우저 주소 표시줄에 복사합니다.브라우저는 로컬에서 함수를 실행할 때와 유사한 출력을 표시해야 합니다.
구부리다
저희가 해냈어요.😍, 이제 프로필이 시작되고 실행되었습니다. Azure UI에서 사용자 정의 도메인을 설정할 수 있습니다.
사용자 정의 도메인을 설정하려면:
Azure 포털에 접속하여 애플리케이션 서비스로 이동하는 경우:
왼쪽에서'설정'범주 아래의'사용자 정의 도메인'설정을 볼 수 있습니다
사용자 정의 도메인을 추가하는 옵션이 표시됩니다.
만약 도메인 이름이 없다면, 도메인 이름을 구매하는 옵션도 볼 수 있을 것이다.
너는 상세한 정보를 기입해서 도메인 이름을 구매할 수 있다.
사용자 정의 도메인이 있으면 응용 프로그램에 연결할 수 있습니다.
도메인에 SSL 바인딩을 추가하고
https
을 통해 액세스 가능귀속을 추가하지 않았기 때문에, 제 이력서는
http://rishabcloud.com/resume
에서 찾을 수 있습니다이 강좌를 좋아해 주셨으면 좋겠습니다. 저도 이 도전을 위해 유튜브 영상을 만들 것입니다. 여기는
너도 날 따라와.
Reference
이 문제에 관하여(JavaScript와 Azure 함수를 사용하여 이력서 API를 구축하는 방법은 무엇입니까?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/rishabk7/how-i-built-a-resume-api-w-javascript-and-azure-functions-fbm텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)