Patch-werkwoord gebruiken met krullen

Ik probeer een patch-oproep naar een server te maken. Ik gebruik de volgende opdracht:

curl --data status=closed -X PATCH https://api.viafoura.com/v2/dev.viafoura.com/pages/7000000043515 

Is dit de juiste manier om het patchverzoek te verzenden? Ik krijg een foutmelding dat er geen statusparameter is geplaatst. Ik vermoed dat de – DATA alleen voor postverzoek is en dus vindt de server de statusparameter niet.

Dit is het antwoord (FYI):

{"http_status":400,"error":"Parameter validation errors","validation_errors":{"status":{"error":"Request missing status parameter."}}}

U kunt documentatie vinden over deze service .


Antwoord 1, Autoriteit 100%

Dit is het formaat dat u moet gebruiken:

curl --request PATCH https://api.viafoura.com/v2/dev.viafoura.com/pages/7000000043515?status=closed

Die API lijkt de status-parameter als een queryparameter op de URL te willen willen, geen deel van het patch-orgaan.

Op dit punt gaat de server een 401-fout retourneren: “U moet ingelogd zijn om pagina-instellingen te wijzigen.” Aangaanschijnlijk moet je eerst inloggen met zoiets als volgt:

curl --request POST "https://api.viafoura.com/v2/dev.viafoura.com/users/login?password=TeNn!sNum8er1&[email protected]"

Ik heb de inloggegevens van hun documentatie in dat voorbeeld gebruikt, die ik dacht dat ik op hun Dev-server zou werken, maar het retourneert momenteel een “onjuiste wachtwoord”.

Als u echter geldige inloggegevens hebt, moet u echter een sessiecookie terugkrijgen die u vervolgens kunt gebruiken om uw patchverzoek te verifiëren.


Antwoord 2, Autoriteit 17%

Ik probeerde te pleiten tot een tastypie-bron met een vergelijkbaar krulverzoek. Voor mij was het probleem waar de gegevens in moesten worden gepasseerd zoals SO:

curl --data '{"field": "new_value"}' -X PATCH http://127.0.0.1:8000/api/v1/resource_uri/pk/

Merk op hoe wat ik naar de gegevensvlag passeert, in de binnenkant van wat eruit ziet als een woordenboek die is gepasseerd als een tekenreeks, in plaats van de param rechtstreeks te plaatsen zoals in de vraag. Natuurlijk werkt een param ook zoals reeds beantwoord, maar hopelijk helpt dit sommige mensen.


Antwoord 3, Autoriteit 3%

Voor degenen die het op Windows uitvoeren, met een complex patchexpressie voor meer dan één eigenschap.
Het volgende werkte voor mij:

curl -X PATCH "http://localhost:5001/tenants/test02" -H "Content-Type: application/json" -d [{"""op""":"""replace""","""value""":"""100""","""path""":"""/employmentEndSettings/daysLoginActive"""},{"""op""":"""replace""","""value""":"""retiree""","""path""":"""/employmentEndSettings/userRoleAfter"""}]

Antwoord 4, Autoriteit 2%

Dit is iets dat voor mij in mijn voorbeeld-app werkte.

curl --data 'id=57&equipment_type_name=57 edited' -X PATCH http://localhost:5009/equipment-type/update
{
  "info": "Equipment type updation.",
  "response": {
    "status": "success",
    "message": "updateEquipmentType",
    "result": {
      "data": [
        [
          {
            "update_status": 1
          }
        ],
        {
          "fieldCount": 0,
          "affectedRows": 0,
          "insertId": 0,
          "serverStatus": 2,
          "warningCount": 0,
          "message": "",
          "protocol41": true,
          "changedRows": 0
        }
      ]
    }
  }
}

Antwoord 5, Autoriteit 2%

Uw opdrachtregel moet werken. Zoals je kunt zien in de patch rfc5789 , is het HTTP-verzoek vergelijkbaar wat Curl verzendt ( Gebruik – trace-ascii om het volledige te zien krulcommunicatie). Misschien wilt u het content-type wijzigen (met –HEADER ) .

De genoemde ontbrekende statusparameter verwijst waarschijnlijk naar de inhoud in de request-body. Uw “status=closed”-gegevens hebben mogelijk niet het juiste formaat (JSON?) of zijn onvolledig.


Antwoord 6

Een alternatieve manier is als volgt, dit is echter via een POST-oproep

curl --data status=closed https://api.viafoura.com/v2/dev.viafoura.com/pages/7000000043515?verb=PATCH 

Ik vermoed dat dit geen algemene manier is en alleen van toepassing is op dit specifieke geval.

Other episodes