Avatar billede lasserasch Juniormester
02. marts 2012 - 20:28 Der er 8 kommentarer og
1 løsning

Rest API - Kan man angive responsetype som parameter?

Hey alle...

Jeg er ved at lave en Rest Webservice. Jeg skal både kunne levere Json og XML som response type.

Pt gør jeg det ved at lave forskellige UriTemplates til det som vist herunder.

Det virker fint, men er der ikke mulighed for at lave det som en parameter angivelse.

Mit API er ikke så stort, så det går nok, men der må da næsten være en måde hvorpå man kan gøre det lidt mere dynamisk?

Min nuværende løsning ser sådan ud :

[ServiceContract]
    public interface IAedService
    {

        [WebGet(UriTemplate = "xml/allaed?pagenumber={pagenumber}&inoperation={inoperation}&compact={compact}", ResponseFormat = System.ServiceModel.Web.WebMessageFormat.Xml)]
        [OperationContract]
        AllAED AllAed(string pagenumber, string inoperation, bool compact);

        [WebGet(UriTemplate = "xml/aed/{id}", ResponseFormat = System.ServiceModel.Web.WebMessageFormat.Json)]
        [OperationContract]
        Aed Aed(string id);

        [WebGet(UriTemplate = "json/allaed?pagenumber={pagenumber}&inoperation={inoperation}&compact={compact}", ResponseFormat = System.ServiceModel.Web.WebMessageFormat.Xml)]
        [OperationContract]
        AllAED AllAed(string pagenumber, string inoperation, bool compact);

        [WebGet(UriTemplate = "json/aed/{id}", ResponseFormat = System.ServiceModel.Web.WebMessageFormat.Json)]
        [OperationContract]
        Aed Aed(string id);

     
    }


Mvh.
Lasse
Avatar billede arne_v Ekspert
02. marts 2012 - 20:37 #2
Avatar billede janus_007 Nybegynder
02. marts 2012 - 21:33 #3
I 4.0 kan man nøjes med blot at angive Content-Type: application/xml eller json

Format på endpoint er ikke nødvendigt :)

Du skal så sende i samme format som du vil have retur.
Avatar billede arne_v Ekspert
02. marts 2012 - 22:05 #4
Der er ikke nogen content type paa GET requests.

Det er accept header ikke content-type header der skal saettes i request.
Avatar billede lasserasch Juniormester
02. marts 2012 - 22:07 #5
Arne... Det virker jo smukt. Tak for hjælpen :-) Smid svar for points, så lukker vi denne igen.

Iøvrigt et lækkert plugin til firefox, den "REST Client". Den kendte jeg ikke....

Mvh.
Lasse
Avatar billede arne_v Ekspert
02. marts 2012 - 22:14 #6
svar
Avatar billede janus_007 Nybegynder
03. marts 2012 - 07:55 #7
naaahhh Arne, det er Content-Type :) har nemlig lige siddet med et REST-projekt de sidste 14 dage.
Avatar billede janus_007 Nybegynder
03. marts 2012 - 07:57 #8
Det kan forresten ses lige her: https://chrome.google.com/webstore/detail/fhjcajmcbmldlhcimfajhfbgofnpcjmb på den REST-client.
Avatar billede arne_v Ekspert
03. marts 2012 - 20:31 #9
Det kan godt vaere at du har arbejde med REST i 14 dage, men HTTP specs er helt klar.

Content-Type fortaeller hvilket indhold body har.

GET requests har ikke nogen body.

En streng server vil give fejl hvis den modtager et GET request med en Content-Type header.

En client som sender Content-Type header i en GET request for at angive hvilket format man oensker retur er defekt. Ogsaa selvom det eventuelt virker med version x.x af WCF.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester