Merhaba,
Openapi3 ile hazırlanmış bir API setiyle çalışmam lazım. Kısaca karşı programa her gün veri göndereceğim ve alacağım. Şurada benzer bir API örneği var : https://petstore.swagger.io/
Postman isimli bir uygulama bulup, denemeleri yaptım. Ancak delphi tarafında bu işi en hızlı nasıl geliştirebilirim? İşi her gün çalışacak şekilde otomatiğe bağlamak istiyorum.
Teşekkürler.
OpenApi3 Swagger ile uygulama?
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Re: OpenApi3 Swagger ile uygulama?
Burada basit JSON iletişim var. Sormak istediğiniz JSON stringleri işlemleri nasıl serialize/de-serialize ederim ise ben mORMot framework öneririm.
https://synopse.info/fossil/wiki/Synopse+OpenSource
https://github.com/synopse/mORMot.git/
Özetle record based json çalışabiliyorsunuz. Class kullanmıyor. Öğrenme süreci var. Kendine has bazı özellikleri var. Ancak başlangıç için aşağıdaki iki örneğe bakabilirsiniz.
Order için olan standart json string için serialize/de-serialize örneğidr.
User için olan json array string için serialize/de-serialize örneğidir.
Örnek kod Delphi 10.3.3 ve mORMot (SynopseCommit.inc) sürüm 1.18.6045 ile çalışmaktadır.
Özetle;
- record tanımlarınız "packed record" olarak tanımlanmalı.
- Delphi 7 ile kullanacak iseniz RTTI sebebi ile veya Json içeriğinden herşeyi değil belli kısımları okumak istiyor, gerisini gözardı etmek istiyorsanız; her bir record için bir string karşılığını oluşturmalı ve TTextWriter sınıfını kullanarak register etmelisiniz.
Gerekli try..except kontrolleri özellikle de-serialize işlemlerine eklenmelidir. Özel durumlarda exception oluşur.
Yukarıdaki bilgiler sizin elinizdeki işi bitirmeniz için yeterli olacaktır.
https://synopse.info/fossil/wiki/Synopse+OpenSource
https://github.com/synopse/mORMot.git/
Özetle record based json çalışabiliyorsunuz. Class kullanmıyor. Öğrenme süreci var. Kendine has bazı özellikleri var. Ancak başlangıç için aşağıdaki iki örneğe bakabilirsiniz.
Order için olan standart json string için serialize/de-serialize örneğidr.
User için olan json array string için serialize/de-serialize örneğidir.
Örnek kod Delphi 10.3.3 ve mORMot (SynopseCommit.inc) sürüm 1.18.6045 ile çalışmaktadır.
Kod: Tümünü seç
uses
SynCommons;
type
TOrder = packed record
id: Integer;
petId: Integer;
quantity: Integer;
shipDate: TDateTime;
status: string;
complete: Boolean;
end;
TUser = packed record
id: Integer;
username: string;
firstName: string;
lastName: string;
email: string;
password: string;
phone: string;
userStatus: Integer;
end;
TUsers = TArray<TUser>;
procedure TForm1.Button1Click(Sender: TObject);
var
Json: string;
OrderRec: TOrder;
ReadRec: TOrder;
begin
// /store/order için örnek
OrderRec.id := 1;
OrderRec.petId := 2;
OrderRec.quantity := 3;
OrderRec.shipDate := Now();
OrderRec.status := 'placed';
OrderRec.complete := True;
Json := EmptyStr;
Json := string(SynCommons.RecordSaveJSON(OrderRec, TypeInfo(TOrder)));
if Json.IsEmpty then
begin
ShowMessage('Json oluşturmada sorun oluştu.');
Exit();
end;
ShowMessage('Json (order): ' + Json);
if not SynCommons.RecordLoadJSON(ReadRec, RawUTF8(Json), TypeInfo(TOrder)) then
begin
ShowMessage('Json okumada sorun oluştu.');
Exit();
end;
ShowMessage('ReadRec.shipDate: ' + DateToStr(ReadRec.shipDate));
end;
procedure TForm1.Button2Click(Sender: TObject);
var
Json: string;
Users: TUsers;
ReadUsers: TUsers;
begin
// /user/createWithArray için örnek
SetLength(Users, 2);
Users[0].id := 1;
Users[0].username := 'user1';
Users[0].firstName := 'Firstname1';
Users[0].lastName := 'Lastname1';
Users[0].email := 'a@b.com';
Users[0].password := '1234';
Users[0].phone := '01234567890';
Users[0].userStatus := 100;
Users[1].id := 2;
Users[1].username := 'user2';
Users[1].firstName := 'Firstname2';
Users[1].lastName := 'Lastname2';
Users[1].email := 'b@b.com';
Users[1].password := '1235';
Users[1].phone := '01234567891';
Users[1].userStatus := 101;
Json := EmptyStr;
Json := string(SynCommons.DynArraySaveJSON(Users, TypeInfo(TUsers)));
if Json.IsEmpty then
begin
ShowMessage('Json oluşturmada sorun oluştu.');
Exit();
end;
ShowMessage('Json (createWithArray): ' + Json);
if not SynCommons.DynArrayLoadJSON(ReadUsers, RawUTF8(Json), TypeInfo(TUsers)) then
begin
ShowMessage('Json okumada sorun oluştu.');
Exit();
end;
ShowMessage('ReadUsers[1].e-mail: ' + ReadUsers[1].email);
end;
- record tanımlarınız "packed record" olarak tanımlanmalı.
- Delphi 7 ile kullanacak iseniz RTTI sebebi ile veya Json içeriğinden herşeyi değil belli kısımları okumak istiyor, gerisini gözardı etmek istiyorsanız; her bir record için bir string karşılığını oluşturmalı ve TTextWriter sınıfını kullanarak register etmelisiniz.
Kod: Tümünü seç
const
__TOrder = 'id:Integer,petid:Integer,quantity:Integer,shipDate:TDateTime,status:string,complete:Boolean';
initialization
TTextWriter.RegisterCustomJSONSerializerFromText(TypeInfo(TOrder), __TOrder).Options = [soReadIgnoreUnknownFields];
Yukarıdaki bilgiler sizin elinizdeki işi bitirmeniz için yeterli olacaktır.