Како направити АПИ са Ламбдас и АПИ Гатеваи-ом

Да ли желите да приступите својој бази података, контролишете систем или извршите неки код са друге веб локације? АПИ може све ово учинити за вас, а њих је изненађујуће лако подесити.

АПИ је УРЛ који можете обављати GET, PUT,POST , иDELETEзахтева за контролу друге услуге. Ако га сами направите, можете да направите ове АПИ-је како бисте иза кулиса радили шта год желите. Уобичајена употреба је пружање контроле базе података, извођење радњи на независним АПИ-јевима (АПИ-цептион) или контрола друге услуге.

Зашто користити АПИ?

Можете се питати зашто нам је потребан АПИ када можемо директно приступити бази података или покренути код на веб локацији. Постоји неколико огромних предности АПИ-ја у односу на покретање кода на вашој веб локацији.

Сакријте приступне кључеве и токене

Ово је можда најважнији разлог за употребу АПИ-ја. Ако приступате бази података, тада ће вам требати детаљи базе података, као и подаци корисника и приступа токена / кључа.

Ако приступите бази података са веб локације, тада ћете имати све ове детаље у изворном коду своје веб локације. Ово је заиста лоша пракса, јер свако може погледати контролу извора и украсти ваше детаље. Ово не звучи лоше, али шта ако су ово ваши акредитиви за АВС или Гоогле Цлоуд Цомпуте? Људи који приступају вашој веб локацији тада би их могли користити за покретање шта год желе на вашем налогу, остављајући вам огроман рачун.

Покретање ових процеса иза АПИ-ја значи да нико не може видети било који приватни детаљ - не може их украсти да би их користио у сопственим пројектима. Ако код веб локације складиштите у ГитХуб-у или у другој контроли јавног извора, то такође значи да ни они тамо нису видљиви.

Покрените код негде другде

Шта ако не користите ниједну другу услугу и не користите тајне кључеве? Ако користите велики или сложени бит кода или ако не желите да неко други чита ваш код и открије како то функционише, и даље можете да користите АПИ.

Контролишите ко има приступ

Пружање АПИ-ја такође вам омогућава да ограничите ко може приступити бази података или покренути код. То можете учинити ако вам је потребан АПИ кључ. Овај кључ се користи за идентификацију корисника који подноси захтев, а затим дозволу или одбијање захтева.

Ово се може користити да би само неколико људи могло да приступи услузи или чак да створи систем нивоа. Овако функционише пуно АПИ-ја који се плаћају. Свима се даје бесплатан, али ограничен приступ, а затим дозвољавате плаћање за приступ супериорним деловима услуге или само већу стопу захтева.

Израда АПИ-ја

Сад кад знамо неке разлоге зашто бисмо можда желели да креирамо АПИ, учинимо управо то. Користићемо АПИ Гатеваи и АВС Ламбдас, јер је то једноставније од покретања сервера. Уверите се да имате АВС налог и да сте пријављени.

Постављање АПИ мрежног пролаза

Почећемо тако што ћемо отворити услугу АПИ Гатеваи и кликнути на „Гет Стартед“ . На следећој страници морамо да изаберемо „Нови АПИ“опција. Затим ћемо нашем АПИ-ју дати име и опис и кликнути на „Направи АПИ“.

Клик на „Направи АПИ“ће нас одвести на страницу за конфигурацију за АПИ.

Прво што треба да урадимо је да додамо ресурс у АПИ. Коришћење ресурса омогућава нам да групишемо сличне АПИ позиве заједно користећи угнежене косе црте. Направићемо АПИ који можемо користити за давање препорука о томе шта да гледамо. Стога можемо имати/tv-showsи то /moviesкао две основне методе.

Кликните падајући мени „Радње“ и одаберите „Направи ресурс“ . Именујте своје ресурсе, водећи рачуна да су оба на путу / /.

Желимо да корисници могу да оду на „/ мовиес / хоррор“ или „/ тв-схов / цомеди“, а то можемо да додамо додавањем параметара путање. То су променљиве којима можемо приступити унутар АПИ-ја. Да бисмо креирали један од њих, треба да подесимо ресурс на {resourceName}следећи начин. То се може учинити за „ТВ емисије“ и „Филмове“.

Сада када имамо дужину и жанр, можемо створити методе за добијање и додавање података у табелу. Изаберите један од {genre}ресурса, кликните на „Акције“ изатим Створи метод“ . Ово ће створити мали сиви оквир испод ресурса на који можемо кликнути. Почећемо са аGETпа одаберите то и кликните на дугме за потврду.

Овде ћемо одлучити како да поступимо са захтевом. Користићемо АВС Ламбдас, али треба да их креирамо пре него што завршимо са подешавањем метода.

Стварање Ламбда

У могућности смо да одговоримо на ове захтеве за АПИ користећи Ламбдас, што је сјајно јер се покрећу само када су нам потребни. Такође их је заиста лако створити, па ћемо то сада и урадити.

У Ламбда конзоли кликните на „Направи функцију“. Тада можемо именовати нашу прву АПИ функцију movieAPI, подесити је да покреће Ноде 8.10 и „Направити нову улогу из шаблона (а)“ . Назваћемо нашу нову улогу „таблеАПИ“ и додати „Једноставне дозволе за микросервис“ као једини образац.

Сав код се може наћи на //гитхуб.цом/СамВСофтваре/Пројецтс/трее/мастер/мовиеАПИ

Кликом на „Направи функцију“ послаће нас у Ламбда прозор. Померите се надоле до одељка „Функцијски код“ и ми ћемо променити код. Прво што ћемо урадити је да проверимо која је метода захтева коришћена.

exports.handler = async (event) => { console.log(event); if (event.httpMethod === 'PUT'){ let response = putMovie(event) return done(response); } else if (event.httpMethod === 'GET'){ let response = getMovie(event); return done(response); } };

Почећемо са писањем getMovieфункције. Ова функција ће започети добивањем genreпараметра путање. Овде коришћење параметара путање може олакшати овај процес.

const getMovie = event => { let genre = event.pathParameters.genre; return; }

With the genre that the user requested, we are going to get a recommended movie for them. I copied these from 25 Top Films From Each Genre and added them to an object with the genre as the key. We can then get the film by getting the value of the genre requested.

const movies = { action: 'Desperado (1995)', fantasy: 'Inception (2010)', ... horror: 'Black Swan (2010)' } const getMovie = event => { let genre = event.pathParameters.genre; return movies[genre]; }

This means that the title of the movie is being passed into the donefunction. This function is used, as API Gateway expects the data to come back in a very specific format. This function turns a string into that required format.

const done = response => { return { statusCode: '200', body: JSON.stringify(response), headers: { 'Content-Type': 'application/json', 'Access-Control-Allow-Methods': '*', 'Access-Control-Allow-Origin': '*' } } }

We can do a very similar thing for a tv-showsAPI function, reusing most of the code. Just change the function names and the movie suggestions to tv show.

Connecting the Lambdas to API Gateway

Back in API Gateway, we can add our new Lambdas to the methods we created earlier. We need to make sure that “Use Lambda Proxy integration”is selected and that we are pointing at the correct Lambda. Clicking “Save” will ask you for permissions to access this Lambda, to which we can give the “OK”.

Do this for the GETmethods on both resources and we can start to test. Selecting the methods should now show a method execution diagram. This sounds complicated but the only bit we need is the “TEST”section.

Clicking “TEST” will open a new section where we can try out the API. There are lots of things you can set here, but the only one we care about is the Path {genre}. We need to set this to the genre we’re requesting. Entering “western” as the genre and hitting the “Test” button gets a response like this:

We got our API working! Now we need to make sure that other people can access it. There are two steps to this.

  1. We enable CORS — Select the “{genre}”resource and then click “Actions”and “Enable CORS”. Leave everything as defaults and, when asked, click “Yes, replace existing values”.
  2. Deploy our API — Click on “Actions”andDeploy API”. Set the deployment stage to “[New Stage]” and then give your stage a name like “production”orpublic”.

Once your API has deployed you should get a URL like this. This is the base of your API. You can add /movies/western to access your API.

//{uniqueCode}.execute-api.eu-west-1.amazonaws.com/production

Your API URL might end up something like:

//fds1fe31fes476s.execute-api.eu-west-1.amazonaws.com/production/movies/western

That’s all for this article. In the next one we’ll connect this API to Dynamo tables and let users vote on their favourite movies in each genre. You can read that article below.

Building an API with Lambdas and API Gateway — Part 2

У првом делу смо креирали АПИ који је прослеђивао захтеве Ламбди која је враћала најбољу ТВ емисију или филм ...

средња.цом