AMcoder - javascript, python, java, html, php, sql

API զանգ Django-ի մեկ կայքից մյուսը

Ես բավականին նոր եմ Python/Django-ում, բայց ես ստեղծել եմ REST API մեկ կայքի համար (siteA.com) և կցանկանայի, որ մեկ այլ կայք (siteB.com) կարողանա զանգահարել այս API և ցույց տալ որոշ արդյունքներ: Դրա համար ես ավելացրել եմ Django REST Framework-ը և Django Auth2 Provider-ը siteA-ին: Այժմ ես կարող եմ զանգահարել API-ն՝ օգտագործելով curl՝ մուտքի նշանը ստանալու համար.

curl -X POST -d "client_id=CLIENT_ID&client_secret=CLIENT_SECRET&grant_type=password&username=USERNAME&password=PASSWORD" http://www.siteA.com/oauth2/access_token   [1]

Սա տալիս է իմ ուզած պատասխանը.

{"access_token": "72x63615xe29f4xfdadexbcd77x27b5fx0bceexx", "scope": "read", "expires_in": 86399, "refresh_token": "5fx80dx320cx3abe7d0x27d5f1x64e7x413x0f70"}

Օգտագործելով իմ ստացած մուտքի նշանը, այժմ կարող եմ զանգահարել API.

curl -v -H "Authorization: Bearer 72x63615xe29f4xfdadexbcd77x27b5fx0bceexx" "http://www.siteA.com/api/?q=SOMESTRING&per_page=3&page=1&sort=random"     [2]

Ինչն ինձ տալիս է JSON պատասխան՝ 3 արդյունքով «SOMETRING» հարցման տողի համար:

Ամեն ինչ լավ է աշխատում, բայց հիմա ես ուզում եմ այս զանգերը կատարել siteB.com-ից: Այլ կերպ ասած, ես ուզում եմ ստեղծել մի էջ, որը, եթե կանչվի որոշակի որոնման հարցումով, նախ ստուգի, թե արդյոք կա մուտքի նշան, ինչպես [1]-ում, ապա ստանալ որոնման արդյունքները [2] և ցույց տալ դրանք JSON ձևաչափով: Ես պարզապես գաղափար չունեմ, թե ինչպես դա անել: Փորձել է օգտագործել OAuth2-ը requests_oauth2-ից, բայց պարզապես չգիտեմ curl-ի հայտարարությունները Python-ի թարգմանելու ճիշտ եղանակը: Որևէ օգնություն:


  • Ստուգեք urrlib2 ընկեր: 25.09.2013
  • Ես տեսնում եմ, որ սխալ եմ թույլ տվել նախորդ մեկնաբանության մեջ: դրա urllib2 ոչ թե urrlib2 :P 26.09.2013
  • Ես նախ փորձեցի այն OAUth-ով և ձախողվեց, հետո փորձեցի այն Requests-ով, բայց վերջապես հաջողվեց urllib2-ով: Պարզապես այս 3 տողերը կատարում են աշխատանքի մեծ մասը՝ req = urllib2.Request(url, query_string); file = urllib2.urlopen(req); result = ast.literal_eval(file.read()); 27.09.2013
  • ast.literal_eval()? json.loads()-ն ավելին է, ինչի հետևից եք: stackoverflow.com/a/9949553/102260 — Բայց եթե լուրջ, օգտագործեք Requests-ը, այն կվերծանի JSON-ը ձեզ համար: r = requests.get(url, params=query_string); r.json() — և դու ավարտեցիր: 28.09.2013

Պատասխանները:


1

Եթե ​​ցանկանում եք, որ siteB.com-ը բացահայտի siteA.com-ի API-ն, ապա հաշվի առեք django-rest-framework-proxy (երրորդ կողմի գեղեցիկ փաթեթ):

Եթե ​​ցանկանում եք, որ siteB.com-ը siteA.com-ի API-ի արդյունքները զետեղի սովորական HTML էջերում, ապա դուք պետք է բարձրացնեք տվյալների API-ն և այն փոխանցեք կաղապարների մատուցման սովորական մեթոդներին: Ըստ մեկնաբանության, դուք կարող եք օգտագործել urllib2, բայց ես խորհուրդ կտայի գերազանց Հայտերը:

Հուսով եմ, որ դա օգնում է:

27.09.2013
Նոր նյութեր

Օգտագործելով Fetch Vs Axios.Js-ը՝ HTTP հարցումներ կատարելու համար
JavaScript-ը կարող է ցանցային հարցումներ ուղարկել սերվեր և բեռնել նոր տեղեկատվություն, երբ դա անհրաժեշտ լինի: Օրինակ, մենք կարող ենք օգտագործել ցանցային հարցումը պատվեր ներկայացնելու,..

Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար
Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար Ինչպե՞ս հանգստացնել ձեր միտքը և աշխատեցնել ձեր պրոցեսորը: Ինչպես մնալ հանգիստ և զարգանալ ճնշման տակ...

Մեքենայի ուսուցում բանկային և ֆինանսների ոլորտում
Բարդ, խելացի անվտանգության համակարգերը և հաճախորդների սպասարկման պարզեցված ծառայությունները բիզնեսի հաջողության բանալին են: Ֆինանսական հաստատությունները, մասնավորապես, պետք է առաջ մնան կորի..

Ես AI-ին հարցրի կյանքի իմաստը, այն ինչ ասում էր, ցնցող էր:
Այն պահից ի վեր, երբ ես իմացա Արհեստական ​​ինտելեկտի մասին, ես հիացած էի այն բանով, թե ինչպես է այն կարողանում հասկանալ մարդկային նորմալ տեքստը, և այն կարող է առաջացնել իր սեփական արձագանքը դրա..

Ինչպես սովորել կոդավորումը Python-ում վագրի պես:
Սովորելու համար ծրագրավորման նոր լեզու ընտրելը բարդ է: Անկախ նրանից, թե դուք սկսնակ եք, թե առաջադեմ, դա օգնում է իմանալ, թե ինչ թեմաներ պետք է սովորել: Ծրագրավորման լեզվի հիմունքները, դրա..

C++-ի օրական բիթ(ե) | Ամենաերկար պալինդրոմային ենթաշարը
C++ #198-ի ամենօրյա բիթ(ե), Ընդհանուր հարցազրույցի խնդիր. Ամենաերկար պալինդրոմային ենթատող: Այսօր մենք կանդրադառնանք հարցազրույցի ընդհանուր խնդրին. Ամենաերկար palindromic substring...

Kydavra ICAReducer՝ ձեր տվյալների ծավալայինությունը նվազեցնելու համար
Ի՞նչ է ICAReducer-ը: ICAReducer-ն աշխատում է հետևյալ կերպ. այն նվազեցնում է նրանց միջև բարձր փոխկապակցված հատկանիշները մինչև մեկ սյունակ: Բավականին նման է PCAreducer-ին, չնայած այն..