Kong / Kong/httpsnippet

Generate Robust C# Code

Open
#104 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
TypeScript
Stars
1.2k
Forks
242
PR merge metrics
No merged PRs in 30d

Description

Improvement Suggestion:

I would have liked the following autogenerated C# for a HTTP POST request with the single parameter err of value + & serialized as x-www-form-urlencoded in the body.

var client = new RestClient("https://localhost");
var request = new RestRequest(Method.POST);
request.AddHeader("postman-token", "da4d0044-61a9-3943-40db-9e753aca6020");
request.AddHeader("cache-control", "no-cache");
Action<string,string> parameter = (name, value) => request.AddParameter(name, value);
parameter("err", "+ &");
IRestResponse response = client.Execute(request);

but what Postman did produce for me was the following C# code:

var client = new RestClient("https://localhost");
var request = new RestRequest(Method.POST);
request.AddHeader("postman-token", "da4d0044-61a9-3943-40db-9e753aca6020");
request.AddHeader("cache-control", "no-cache");
request.AddHeader("content-type", "application/x-www-form-urlencoded");
request.AddParameter("application/x-www-form-urlencoded", "err=%2B%20%26", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);

Rationale

  1. parameter("err", "+ &"); is more readable than "[..] err=%2B%20%26 [..]". The value, + &, is more recognizable.
  2. The code is more maintanable. At work, I tried the following development workflow:
    (a) Type a minimal working example request into to Postman.
    (b) Generate C# code.
    (c) Copy generated code to Visual Studio.
    (d) Replace example values by C# method parameters.
    This workflow failed, because the method parameters were not x-www-form-urlencoded at runtime. Generating UrlEncode() calls would make writing a consumer of a HTTP POST x-www-form-urlencoded API effortless.
  3. This usage of IRestRequest.AddParameter is encouraged, whereas the currently generated code depends on an internal hack not meant for 3rd party usage.
    /// - RequestBody: Used by AddBody() (not recommended to use directly)

App Details:

Postman for Windows
Version 5.3.2
win32 6.1.7601 / x64

Continuation of: https://github.com/postmanlabs/postman-app-support/issues/3870

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start at the C# snippet-generation entry point and compare the current form-urlencoded output with the issue’s two examples, focusing on how parameter names and values are represented. Done means generated C# uses request parameters with runtime-safe URL encoding rather than embedding one encoded request-body string.

Written by the indexing model from the issue text.

Assessment

Tech stack
csharp, typescript
Domain
devtools, tooling
Issue type
Feature
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.