Mai mult
Cum pot POSTA date JSON cu Curl de la un terminal/commandline pentru a Testa Primăvară RESTUL?
Eu folosesc Ubuntu si instalat cURL pe ea. Vreau să-mi testez Primăvară RESTUL aplicație cu cURL. Mi-am scris codul POȘTAL în partea de Java. Cu toate acestea, vreau să-l testeze cu cURL. Am încercat să postez un date JSON. Exemplu de date este ca aceasta:
{"value":"30","type":"Tip 3","targetModule":"Target 3","configurationGroup":null,"name":"Configuration Deneme 3","description":null,"identity":"Configuration Deneme 3","version":0,"systemId":3,"active":true}
Eu folosesc aceasta comanda:
curl -i \
-H "Accept: application/json" \
-H "X-HTTP-Method-Override: PUT" \
-X POST -d "value":"30","type":"Tip 3","targetModule":"Target 3","configurationGroup":null,"name":"Configuration Deneme 3","description":null,"identity":"Configuration Deneme 3","version":0,"systemId":3,"active":true \
http://localhost:8080/xx/xxx/xxxx
Returnează eroarea asta:
HTTP/1.1 415 Unsupported Media Type
Server: Apache-Coyote/1.1
Content-Type: text/html;charset=utf-8
Content-Length: 1051
Date: Wed, 24 Aug 2011 08:50:17 GMT
Descriere de eroare este asta:
serverul a refuzat această solicitare, deoarece cererea entitatea este într-un format care nu este suportat de resurse solicitate pentru solicitată metoda ().
Tomcat log: "POST /ui/webapp/conf/clar HTTP/1.1" 415 1051
Ce este formatul corect de comandă cURL?
Acest lucru este meu de Java partea "PUNE" cod (am testat OBȚINE și ȘTERGEȚI-și au locul de muncă):
@RequestMapping(method = RequestMethod.PUT)
public Configuration updateConfiguration(HttpServletResponse response, @RequestBody Configuration configuration) { //consider @Valid tag
configuration.setName("PUT worked");
//todo If error occurs response.sendError(HttpServletResponse.SC_NOT_FOUND);
return configuration;
}
2583
22
Aveți nevoie pentru a seta content-type application/json. Dar
d
trimite Content-Typeapplication/x-www-form-urlencoded
, care nu este acceptat în Primăvară's parte.Se uită la curl om page, cred că puteți utiliza
-H
:Exemplu complet:
(
-H
este prescurtarea de la--antet
,-d "pentru" --date
)Notă:- cerere POST
e *opțional* dacă utilizați
-d, ca
-d` steagul implică o cerere POST.Pe Windows, lucrurile sunt puțin diferite. A se vedea comentariul de fir.
Încercați pentru a pune datele într-un fișier, cum corpul lui.json` și de a folosi apoi
S-ar putea găsi resty utile: https://github.com/micha/resty
L's un înveliș rotund CURL care simplifică linie de comandă RESTUL de cereri. Indicați-l la API final, și dă-ai PUS și POST-comenzi. (Exemple adaptate la pagina de start)
De asemenea, l's de multe ori încă necesar să adăugați un Tip de Conținut cap. Puteți face acest lucru o dată, totuși, să setați o valoare implicită, de a adăuga fișiere de configurare per-metoda de pe site-ul: Setare implicită RESTY opțiuni
Pentru Windows, având un singur citat pentru
-d
valoare nu au de lucru pentru mine, dar a făcut de lucru după schimbarea la dublu citat. De asemenea, am nevoie pentru a scăpa ghilimele în interiorul acolade.Asta este, următoarele nu au de lucru:
Dar următoarele lucrat:
Ea a lucrat pentru mine, folosind:
Era fericit mapate la Primavara controller:
IdOnly
este un simplu POJO cu un id de proprietate.Ca un exemplu, creați un fișier JSON, params.json, și se adaugă acest conținut să-l:
Apoi executați această comandă:
Aceasta a lucrat bine pentru mine.
În cazul în care,
-X
Înseamnă http verb.`--de date Înseamnă datele care doriți să trimiteți.
Am aceeasi problema. Am putea rezolva prin specificarea
Folosind CURL Windows, încercați acest lucru:
Puteți utiliza Poștaș, cu interfata grafica intuitiva pentru a asambla `cURL command.
cURL
din lista drop-downcURL
comandaNotă: Există mai multe opțiuni pentru automate cerere generație în lista drop-down, care este de ce am crezut ca postul meu a fost necesara, în primul rând.
HTTPie este o alternativă recomandată pentru `curl pentru că puteți face doar
Se vorbește JSON în mod implicit și se va ocupa atât de setare necesare antet pentru tine, ca de bine de codare date JSON valid. Există, de asemenea,:
pentru antete, și
pentru parametrii șirului de interogare. Dacă aveți o bucată mare de date, puteți, de asemenea citi dintr-un fișier să fie reprezentat JSON:
Daca're testarea de o mulțime de JSON trimite/răspunsuri împotriva unui Odihnitor interfață, poate doriți să verificați Poștaș plug-in pentru Chrome (care vă permite să definiți manual de servicii web teste) și Nod.js bazate pe Newman linie de comandă de companie (care vă permite să automatizeze teste împotriva "colecții" de Poștaș teste.) Atât de liber și deschis!
Ai putea pune, de asemenea, JSON conținut într-un fișier, și-l treacă pentru a se răsuci folosind
---încărcare fișier
opțiune, prin intermediul standard de intrare, astfel:Aceasta a lucrat bine pentru mine, în plus, folosind autentificare de BAZĂ:
Desigur, nu trebuie să utilizați niciodată autentificare de BAZĂ fără SSL și verificat certificat.
M-am întâlnit din nou astăzi, folosind Cygwin's cURL 7.49.1 pentru Windows Și atunci când se utilizează
--date " sau " --date binare cu un alt argument, cURL a fost confuz și s-ar interpreta
{}` în JSON ca un URL șablon. Adăugarea unui "- g " argument pentru a opri cURL expandarea fix asta.A se vedea, de asemenea, https://stackoverflow.com/questions/8333920/passing-a-url-with-brackets-to-curl.
Aceasta a lucrat pentru mine:
Puteți utiliza poștașul să se convertească la CURL
Eu sunt, folosind formatul de mai jos pentru a testa cu un server web.
Las's presupunem acest JSON format dict:
Exemplu complet
Aceasta a lucrat pentru mine la Windows10
curl-d "{"""owner""":"""sasdasdasdasd"""}" -H "Content-Type: application/json" -X-a PUS http://localhost:8080/api/changeowner/CAR4
Folosiți -d opțiune pentru a adăuga o sarcină utilă
În plus:
folosiți -X POST pentru a utiliza metoda POST
folosiți -H 'Accept: application/json' pentru a adăuga accepta tip antet
folosiți -H 'Content-Type: application/json' pentru a adăuga conținut de tip antet
Vă rugăm să verificați acest instrument. Aceasta vă ajută să creați cu ușurință curl fragmente.