Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bellek içi veri deposuyla CRUD API'sini simüle eder. JSON yanıtları gönderir. İstemci tarafı uygulamalardan etki alanları arası kullanım için CORS'i destekler. İsteğe bağlı olarak, Microsoft Entra ile güvenliği sağlanan CRUD API'lerinin simülasyonunu oluşturur.
Eklenti örneği tanımı
{
"name": "CrudApiPlugin",
"enabled": true,
"pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
"configSection": "customersApi"
}
Yapılandırma örneği
{
"customersApi": {
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v1.0.0/crudapiplugin.schema.json",
"apiFile": "customers-api.json"
}
}
Yapılandırma özellikleri
| Mülk | Açıklama |
|---|---|
apiFile |
CRUD API'sinin tanımını içeren dosyanın yolu |
Komut satırı seçenekleri
Hiç kimse
API dosyası örneği
Aşağıda müşteriler hakkında bilgi için CRUD API'sini tanımlayan API dosyalarına birkaç örnek verilmiştir.
Anonim CRUD API'si
Aşağıda müşteriler hakkında bilgi için anonim CRUD API'sini tanımlayan bir API dosyası örneği verilmiştir.
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v1.0.0/crudapiplugin.apifile.schema.json",
"baseUrl": "https://api.contoso.com/v1/customers",
"dataFile": "customers-data.json",
"actions": [
{
"action": "getAll"
},
{
"action": "getOne",
"url": "/{customer-id}",
"query": "$.[?(@.id == {customer-id})]"
},
{
"action": "create"
},
{
"action": "merge",
"url": "/{customer-id}",
"query": "$.[?(@.id == {customer-id})]"
},
{
"action": "update",
"url": "/{customer-id}",
"query": "$.[?(@.id == {customer-id})]"
},
{
"action": "delete",
"url": "/{customer-id}",
"query": "$.[?(@.id == {customer-id})]"
}
]
}
Tek bir kapsam kullanılarak Microsoft Entra ile güvenliği sağlanan CRUD API
Aşağıda, Microsoft Entra ile güvenliği sağlanan müşteriler hakkında bilgi için CRUD API'sini tanımlayan bir API dosyası örneği verilmiştir. Tüm eylemlerin güvenliği tek bir kapsamla sağlanır. CrudApiPlugin belirteç hedef kitlesini, vereni ve kapsamı doğrular.
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v1.0.0/crudapiplugin.apifile.schema.json",
"baseUrl": "https://api.contoso.com/v1/customers",
"dataFile": "customers-data.json",
"auth": "entra",
"entraAuthConfig": {
"audience": "https://api.contoso.com",
"issuer": "https://login.microsoftonline.com/contoso.com",
"scopes": ["api://contoso.com/user_impersonation"]
},
"actions": [
{
"action": "getAll"
},
{
"action": "getOne",
"url": "/{customer-id}",
"query": "$.[?(@.id == {customer-id})]"
},
{
"action": "create"
},
{
"action": "merge",
"url": "/{customer-id}",
"query": "$.[?(@.id == {customer-id})]"
},
{
"action": "update",
"url": "/{customer-id}",
"query": "$.[?(@.id == {customer-id})]"
},
{
"action": "delete",
"url": "/{customer-id}",
"query": "$.[?(@.id == {customer-id})]"
}
]
}
Belirli kapsamlar kullanılarak Microsoft Entra ile güvenliği sağlanan CRUD API
Aşağıda, Microsoft Entra ile güvenliği sağlanan müşteriler hakkında bilgi için CRUD API'sini tanımlayan bir API dosyası örneği verilmiştir. Eylemlerin güvenliği belirli kapsamlarla sağlanır. CrudApiPlugin belirteç hedef kitlesini, vereni ve kapsamı doğrular.
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v1.0.0/crudapiplugin.apifile.schema.json",
"baseUrl": "https://api.contoso.com/v1/customers",
"dataFile": "customers-data.json",
"auth": "entra",
"entraAuthConfig": {
"audience": "https://api.contoso.com",
"issuer": "https://login.microsoftonline.com/contoso.com"
},
"actions": [
{
"action": "getAll",
"auth": "entra",
"entraAuthConfig": {
"scopes": ["api://contoso.com/customer.read"]
}
},
{
"action": "getOne",
"url": "/{customer-id}",
"query": "$.[?(@.id == {customer-id})]",
"auth": "entra",
"entraAuthConfig": {
"scopes": ["api://contoso.com/customer.read"]
}
},
{
"action": "create",
"auth": "entra",
"entraAuthConfig": {
"scopes": ["api://contoso.com/customer.write"]
}
},
{
"action": "merge",
"url": "/{customer-id}",
"query": "$.[?(@.id == {customer-id})]",
"auth": "entra",
"entraAuthConfig": {
"scopes": ["api://contoso.com/customer.write"]
}
},
{
"action": "update",
"url": "/{customer-id}",
"query": "$.[?(@.id == {customer-id})]",
"auth": "entra",
"entraAuthConfig": {
"scopes": ["api://contoso.com/customer.write"]
}
},
{
"action": "delete",
"url": "/{customer-id}",
"query": "$.[?(@.id == {customer-id})]",
"auth": "entra",
"entraAuthConfig": {
"scopes": ["api://contoso.com/customer.write"]
}
}
]
}
API dosyası özellikleri
| Mülk | Açıklama | Gerekli |
|---|---|---|
actions |
API'nin desteklediği eylemlerin listesi. | Evet |
auth |
API'nin güvenli olup olmadığını belirler. İzin verilen değerler: none, entra. Varsayılan none |
Hayır |
baseUrl |
Geliştirme Proxy'sinin URL'yi kullanıma sunduğu temel URL. Dev Proxy, eylemlerde tanımladığınız URL'lere temel URL'yi ekler. | Evet |
dataFile |
API verilerini içeren dosyanın yolu. | Evet |
entraAuthConfig |
Microsoft Entra kimlik doğrulaması yapılandırması. | Evet, authentra yapılandırdığınızda |
Mutlak veya göreli bir yol kullanarak dataFile başvurabilirsiniz. Geliştirme Proxy'si, göreli yolları API tanım dosyasına göre çözümler.
dataFile bir JSON dizisi tanımlamalıdır. Dizi boş olabilir veya ilk bir nesne kümesi içerebilir.
EntraAuthConfig özellikleri
auth özelliğini entraolarak yapılandırırken entraAuthConfig özelliğini tanımlamanız gerekir. Tanımlamazsanız CrudApiPlugin bir uyarı gösterir ve API anonim olarak kullanılabilir.
API dosyasında ve her API eyleminde entraAuthConfig tanımlayabilirsiniz. API dosyasında tanımladığınızda, tüm eylemler için geçerlidir. Bir eylemde tanımladığınızda, bu özel eylem için API dosya yapılandırmasını geçersiz kılar.
entraAuthConfig özelliği aşağıdaki özelliklere sahiptir.
| Mülk | Açıklama | Gerekli | Temerrüt |
|---|---|---|---|
audience |
Belirteç için geçerli hedef kitleyi belirtin. Belirtildiğinde, CrudApiPlugin belirteçten hedef kitleyi bu hedef kitleyle karşılaştırır. Farklıysa, CrudApiPlugin bir 401 Yetkisiz yanıt döndürür. | Hayır | Hiç kimse |
issuer |
Geçerli belirteç vereni belirtin. Belirtildiğinde, CrudApiPlugin belirteçten vereni bu verenle karşılaştırır. Farklıysa, CrudApiPlugin bir 401 Yetkisiz yanıt döndürür. | Hayır | Hiç kimse |
scopes |
Geçerli kapsam dizisini belirtin. Belirtildiğinde CrudApiPlugin, kapsamlardan birinin belirteçte mevcut olup olmadığını denetler. Kapsamlardan hiçbiri yoksa, CrudApiPlugin bir 401 Yetkisiz yanıt döndürür. | Hayır | Hiç kimse |
roles |
Geçerli rol dizisini belirtin. Belirtildiğinde CrudApiPlugin, belirteçte rollerden birinin olup olmadığını denetler. Rollerden hiçbiri yoksa, CrudApiPlugin bir 401 Yetkisiz yanıt döndürür. | Hayır | Hiç kimse |
validateLifetime |
Belirtecin süresinin dolmadığından emin olmak için CrudApiPlugin için true olarak ayarlayın. CrudApiPlugin süresi dolmuş bir belirteç algıladığında 401 Yetkisiz yanıt döndürür. |
Hayır | false |
validateSigningKey |
Belirtecin orijinal olup olmadığını doğrulamak için CrudApiPlugin için true olarak ayarlayın. CrudApiPlugin geçersiz imzaya sahip bir belirteç algıladığında (örneğin, belirteci el ile değiştirdiğiniz için), 401 Yetkisiz yanıt döndürür. |
Hayır | false |
Eylem özellikleri
actions listesindeki her eylem aşağıdaki özelliklere sahiptir.
| Mülk | Açıklama | Gerekli | Temerrüt |
|---|---|---|---|
action |
Dev Proxy'nin verilerle nasıl etkileşime geçtiğini tanımlar. Olası değerler: getAll, getOne, getMany, create, merge, update, delete. |
Evet | Hiç kimse |
auth |
Eylemin güvenli olup olmadığını belirler. İzin verilen değerler: none, entra. |
Hayır | none |
entraAuthConfig |
Microsoft Entra kimlik doğrulaması yapılandırması. | Evet, authentra yapılandırdığınızda |
Hiç kimse |
method |
Dev Proxy'nin eylemi kullanıma açmak için kullandığı HTTP yöntemi. | Hayır | Eyleme bağlıdır |
query |
Dev Proxy'nin veri dosyasındaki verileri bulmak için kullandığı Newtonsoft JSONPath sorgusu. | Hayır | Boş |
url |
Geliştirme Proxy'sinin eylemi gösterdiği URL. Geliştirme Proxy'si URL'yi temel URL'ye ekler. | Hayır | Boş |
url özelliğinde belirtilen URL parametreler içerebilir. Parametre adını küme ayraçlarında sarmalayarak parametreleri tanımlarsınız, örneğin {customer-id}. İsteği yönlendirirken, Dev Proxy parametresini istek URL'sinden gelen değerle değiştirir.
Sorguda aynı parametreyi kullanabilirsiniz. Örneğin, url/customers/{customer-id} ve query$.[?(@.id == {customer-id})]olarak tanımlarsanız, Geliştirme Proxy'si sorgudaki {customer-id} parametresini istek URL'sindeki değerle değiştirir.
Önemli
Dev Proxy, Newtonsoft.Json kullanarak query özelliğinde JSONPath uygular. Kullanımıyla ilgili bazı sınırlamalar vardır, örneğin, yalnızca tek tırnakları destekler. Sorun göndermeden önce sorgunuzu doğrulamayı unutmayın.
Eklenti sorguyu kullanarak veri dosyasındaki verileri bulamadıktan sonra 404 Not Found bir yanıt döndürür.
Her eylem türünün varsayılan bir HTTP yöntemi vardır.
method özelliğini belirterek varsayılanı geçersiz kılabilirsiniz. Örneğin, get eylem türünün varsayılan GETyöntemi vardır. Bunun yerine POST kullanmak istiyorsanız, method özelliğini POSTolarak belirtin.
actions dizisi, alay etmek istediğiniz bir eylem koleksiyonu tanımlamıştı. Aynı HTTP yöntemi ve eylem türü için birden çok eylem tanımlayabilirsiniz. Örneğin, bir müşteriyi kimliğine göre, diğerini de e-posta adresine göre alan iki getOne eylemi tanımlayabilirsiniz. Her eylem için benzersiz URL'ler tanımladığınızdan emin olun.
Eylemler
Dev Proxy, CRUD API'leri için aşağıdaki eylemleri destekler.
| Eylem | Açıklama | Varsayılan yöntem |
|---|---|---|
getAll |
Veri dosyasındaki tüm öğeleri döndürür. | GET |
getOne |
Veri dosyasından tek bir öğe döndürür. Sorgu birden çok öğeyle eşleştiğinde başarısız olur. | GET |
getMany |
Veri dosyasından birden çok öğe döndürür. Sorgu hiçbir öğeyle eşleşmiyorsa boş bir dizi döndürür. | GET |
create |
Veri koleksiyonuna yeni bir öğe ekler. | POST |
merge |
İstekten alınan verileri veri dosyasındaki verilerle birleştirir. | PATCH |
update |
Veri dosyasındaki verileri istekteki verilerle değiştirir. | PUT |
delete |
Öğeyi veri dosyasından siler. | DELETE |
create eylemi kullanarak yeni bir öğe oluşturduğunuzda, eklenti şeklini doğrulamaz ve as-isveri toplamaya ekler.
Veri dosyası örneği
[
{
"id": 1,
"name": "Contoso",
"address": "4567 Main St Buffalo, NY 98052"
},
{
"id": 2,
"name": "Fabrikam",
"address": "4567 Main St Buffalo, NY 98052"
}
]