Apelarea serviciilor web REST de la o pagină clasică asp

Aș dori să încep să mișcăm straturile de afaceri ale aplicațiilor într-o colecție de servicii web REST. Cu toate acestea, cea mai mare parte a intranetului nostru a fost construită folosind ASP clasic și majoritatea dezvoltatorilor în care lucrez păstrează programarea în ASP clasic. În mod ideal, pentru ca aceștia să beneficieze de avantajele unui set unic de API-uri web, acestea ar trebui să fie numite din paginile ASP clasice.

Nu am nici cea mai mică idee cum să fac asta.

0
fr hi bn

7 răspunsuri

Tot ce aveți nevoie este un client HTTP. În .Net, WebRequest funcționează bine. Pentru clasicul ASP, veți avea nevoie de o componentă specifică, cum ar fi aceasta .

0
adăugat

Ați putea folosi o combinație de jQuery cu apeluri JSON pentru a consuma servicii REST de la client

sau

dacă trebuie să interacționați cu serviciile REST din stratul ASP pe care îl puteți utiliza

MSXML2.ServerXMLHTTP

ca:

Set HttpReq = Server.CreateObject("MSXML2.ServerXMLHTTP")
HttpReq.open "GET", "Rest_URI", False
HttpReq.send
0
adăugat
Ce se întâmplă dacă serviciul meu REST are autentificarea de bază necesară? Care ar fi acea schimbare în cea de-a doua metodă de a o numi din clasicul ASP?
adăugat autor mutex, sursa

Iată câteva articole care descriu cum se poate apela un serviciu web dintr-o pagină ASP de clasă:

0
adăugat

@KP

Ar trebui să utilizați de fapt MSXML2.ServerXMLHTTP din aplicațiile ASP/server. XMLHTTP ar trebui să fie utilizat numai de partea clientului deoarece utilizează WinInet care nu este acceptat pentru utilizarea în aplicațiile server/serviciu.

See http://support.microsoft.com/kb/290761, questions 3, 4 & 5 and

http://support.microsoft.com/kb/238425/.

Acest lucru este destul de important, altfel veti experimenta aplicatia dvs. web agatata si tot felul de prostii ciudate se intampla.

0
adăugat

O altă soluție posibilă este să scrieți un .NET DLL care să facă apelurile și să returneze rezultatele (poate să înfășurați ceva ca RESTSharp - dați-i un simplu API personalizat pentru nevoile dvs.). Apoi, înregistrați DLL-ul ca DLL COM și îl utilizați în codul dvs. ASP prin metoda CreateObject.

Am facut asta pentru lucruri precum crearea de JWT-uri semnate si parole de saltare si hashing. Funcționează frumos (în timp ce lucrați ca nebun să rescrieți ASP).

0
adăugat

O altă posibilitate este să utilizați obiectul COM WinHttp Utilizarea WinHttpRequest COM Object .

WinHttp a fost proiectat pentru a fi folosit de la codul serverului.

0
adăugat

A number of the answers presented here appear to cover how ClassicASP can be used to consume web-services & REST calls.

În opinia mea, o soluție Tidier poate fi pentru ClassicASP dvs. pentru a servi doar datele în formate REST. Permiteți codului dvs. de client bazat pe browser să se ocupe de "mashup", dacă este posibil. Ar trebui să puteți face acest lucru fără a include alte componente ASP.

Deci, iată cum mi-ar mockup noul suport REST nou în ClassicASP:

  1. furnizați o pagină Web ASP unică, care acționează ca un tampon de aterizare
  2. Tamponul de aterizare va ocupa doi parametri: verbul și URL-ul, plus un set de conținut al formularului
  3. Utilizați un fel de bloc de comutare pentru a inspecta adresa URL și pentru a direcționa verbul (și conținutul formularului) la un handler relevant
  4. Handlerul va procesa apoi verbul (PUT/POST/GET/DELETE) împreună cu conținutul formularului, returnând un cod de succes/defecțiune plus date, după caz.
  5. Placa de aterizare va inspecta codul de succes/defecțiune și va returna starea HTTP respectivă, plus toate datele returnate

You would benefit from a support class that decodes/encodes the form data from/to JSON, since that will ease your client-side implementation (and potentially streamline the volume of data passed). See the conversation here at Any good libraries for parsing JSON in Classic ASP?

În cele din urmă, pe partea clientului, furnizați o metodă care să ia o sarcină utilă Verb, Url și date. Pe termen scurt, metoda va colaționa parametrii și le va transmite pe placa de aterizare. Pe termen mai lung (odată ce treceți de la ASP clasic), metoda dvs. poate trimite datele pe adresa URL reală.

Mult noroc...

0
adăugat