Tarayıcınızın ağ sekmesinden "Copy as cURL" seçeneğiyle doğrudan kopyaladığınız bir komut da dahil olmak üzere herhangi bir cURL komutunu yapıştırın ve aynı isteğin dokuz dilde yazılmış halini görün. Komut sayfada ayrıştırılır: yöntem, URL, başlıklar ve gövde okunur ve ardından yeniden oluşturulur, böylece geri gelen şey, URL'nizin içine yerleştirildiği bir şablon değil, yapıştırdığınız istektir.
This command:
curl -X POST 'https://funapi.dev/api/friends/v1/characters' \
-H 'Authorization: Bearer qa-admin-token' \
-H 'Content-Type: application/json' \
-d '{"name":"Gunther","job":"Head barista"}'
is parsed as POST https://funapi.dev/api/friends/v1/characters with 2 header(s) and a 39-byte body, and converts to:
const res = await fetch("https://funapi.dev/api/friends/v1/characters", {
method: "POST",
headers: {
"Authorization": "Bearer qa-admin-token",
"Content-Type": "application/json"
},
body: "{\"name\":\"Gunther\",\"job\":\"Head barista\"}"
});
console.log(res.status, await res.json());import axios from 'axios';
const res = await axios({
method: "post",
url: "https://funapi.dev/api/friends/v1/characters",
headers: {
"Authorization": "Bearer qa-admin-token",
"Content-Type": "application/json"
},
data: {"name":"Gunther","job":"Head barista"}
});
console.log(res.status, res.data);import requests
url = "https://funapi.dev/api/friends/v1/characters"
headers = {
"Authorization": "Bearer qa-admin-token",
"Content-Type": "application/json"
}
payload = {"name":"Gunther","job":"Head barista"}
res = requests.post(url, headers=headers, json=payload)
print(res.status_code, res.json())package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
req, _ := http.NewRequest("POST", "https://funapi.dev/api/friends/v1/characters", strings.NewReader("{\"name\":\"Gunther\",\"job\":\"Head barista\"}"))
req.Header.Set("Authorization", "Bearer qa-admin-token")
req.Header.Set("Content-Type", "application/json")
res, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer res.Body.Close()
out, _ := io.ReadAll(res.Body)
fmt.Println(res.StatusCode, string(out))
}using var client = new HttpClient();
var req = new HttpRequestMessage(HttpMethod.Post, "https://funapi.dev/api/friends/v1/characters");
req.Headers.TryAddWithoutValidation("Authorization", "Bearer qa-admin-token");
req.Content = new StringContent("{\"name\":\"Gunther\",\"job\":\"Head barista\"}", Encoding.UTF8, "application/json");
var res = await client.SendAsync(req);
Console.WriteLine((int)res.StatusCode);
Console.WriteLine(await res.Content.ReadAsStringAsync());given()
.header("Authorization", "Bearer qa-admin-token")
.header("Content-Type", "application/json")
.body("{\"name\":\"Gunther\",\"job\":\"Head barista\"}")
.when()
.post("https://funapi.dev/api/friends/v1/characters")
.then()
.statusCode(200);import { test, expect } from '@playwright/test';
test('POST request', async ({ request }) => {
const res = await request.post("https://funapi.dev/api/friends/v1/characters", {
headers: {
"Authorization": "Bearer qa-admin-token",
"Content-Type": "application/json"
},
data: {"name":"Gunther","job":"Head barista"}
});
expect(res.status()).toBe(200);
});import http from 'k6/http';
import { check } from 'k6';
export default function () {
const res = http.request("POST", "https://funapi.dev/api/friends/v1/characters", "{\"name\":\"Gunther\",\"job\":\"Head barista\"}", { headers: {
"Authorization": "Bearer qa-admin-token",
"Content-Type": "application/json"
} });
check(res, { 'status is 200': r => r.status === 200 });
}echo "{\"name\":\"Gunther\",\"job\":\"Head barista\"}" | http POST "https://funapi.dev/api/friends/v1/characters" Authorization:"Bearer qa-admin-token" Content-Type:"application/json"
cmd.exe'nin kullandığı ters eğik çizgi satır devamlılıkları ve şapka işareti biçimi, kaçış karakterleriyle tek ve çift tırnak işaretleri, tekrarlanan -H başlıkları, curl'ün birleştirdiği şekilde birleştirilen tekrarlanan -d gövdeleri, Authorization başlığına normalleştirilen -u temel kimlik doğrulaması ve bir geliştirici araçları kopyasının getirdiği bayrak yığını (--compressed, -s, -L, --max-time ve benzerleri), URL ile karıştırılmak yerine tanınır ve atlanır.
Curl, bir gövde ve yöntem belirtmediğinizde varsayılan olarak POST yöntemini kullanır ve sizin hiç yazmadığınız bir içerik türü belirler. Listedeki diğer tüm istemciler ise bunların hiçbirini yapmaz. Bu nedenle, dönüştürülmüş bir isteğin çalışmayı durdurmasının en yaygın yolu, curl komutunun örtük yarısının istekle birlikte gelmemesi olduğundan, her ikisi de çıktıda açıkça belirtilir — çıkarılmış bir POST ve çıkarılmış bir Content-Type.
Değer alabilecek bilinmeyen bir bayrak, atlanmak yerine dönüştürmeyi durdurur; çünkü atlanması, ardından gelen URL'yi yutacak ve makul, yanlış bir sonuç üretecektir. Dengesiz bir alıntı da aynı şeyi yapar. Hatasını yüksek sesle dile getiren bir dönüştürücü, tahmin yürüten bir dönüştürücüden daha değerlidir.
Tüm araçlar · Başlangıç rehberi · 39 mock REST API’nin tamamı
Son güncelleme