Solon v4.1.0

nami - Hello World

</> markdown
2026年9月14日 上午5:39:35

Nami 可以脱离 Solon 使用。示例采用 HTTP 通道调用 GitHub API。

1、添加依赖

<dependencies>
    <dependency>
        <groupId>org.noear</groupId>
        <artifactId>nami-coder-snack4</artifactId>
    </dependency>

    <dependency>
        <groupId>org.noear</groupId>
        <artifactId>nami-channel-http</artifactId>
    </dependency>
</dependencies>

2、手动创建代理

public class MainTest {
    public static void main(String... args) {
        GitHub github = Nami.builder()
                .decoder(Snack4Decoder.instance)
                .channel(HttpChannel.instance)
                .upstream(() -> "https://api.github.com")
                .create(GitHub.class);

        // Fetch and print a list of the contributors to this library.
        List<Contributor> contributors = github.contributors("OpenFeign", "feign");
        for (Contributor contributor : contributors) {
            System.out.println(contributor.login + " (" + contributor.contributions + ")");
        }
    }
}

public interface GitHub {
    @NamiMapping("GET /repos/{owner}/{repo}/contributors")
    List<Contributor> contributors(String owner, String repo);

    @NamiMapping("POST /repos/{owner}/{repo}/issues")
    void createIssue(Issue issue, String owner, String repo);
}

public class Contributor {
    public String login;
    public int contributions;
}

public class Issue {
    public String title;
    public String body;
    public List<String> assignees;
    public int milestone;
    public List<String> labels;
}